簡體   English   中英

JSoup:難以提取單個元素

[英]JSoup: Difficulty extracting a single element

對於我的大學編碼項目,我的任務是從互聯網上獲取比特幣的實時價值並將其整合到一個迷你“比特幣程序”中。 問題是我很難從某些網站中提取比特幣的價值。 任何和所有的幫助將不勝感激。

我嘗試過使用不同的網站,結果好壞參半。

示例 1

    final String url = "https://www.coindesk.com/price/bitcoin";
    try
    {
        Document doc = Jsoup.connect(url).get();
        Element ele = doc.select("span.currency-price").first();
        final String words = ele.text();
        System.out.println(words);
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }

示例 2

    final String url = "https://cointelegraph.com/bitcoin-price-index";
    try
    {
        Document doc = Jsoup.connect(url).get();
        Element ele = doc.select("div.price-value").first();
        final String words = ele.text();
        System.out.println(words);
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }

示例 1 在 com.mycompany.test.Test.main(Test.java2) 處導致 java.lang.NullPointerException:

示例 2 運行正常。

網站https://www.coindesk.com/price/bitcoin在呈現內容時嚴重依賴 JavaScript。 Jsoup 無法執行 JavaScript。 它只能解析原始 HTML 文檔。
要查看 Jsoup 看到的內容,請嘗試在禁用 JavaScript 的情況下訪問此頁面。 您會看到頁面缺少主要內容。 或者訪問此頁面並在 JavaScript 修改之前按 Ctrl+U 檢查頁面源。
Using Chrome's debugger (Network tab) you can see it makes additional AJAX requests to get current exchange rates in JSON from this URL: https://production.api.coindesk.com/v1/exchangeRates
然后 JavaScript 用於為此數據創建動態 HTML 元素。 它還請求很少的其他 URL 來獲取圖形數據。

Jsoup 無法解析此頁面,因為帶有react-app id 的div中有一個額外的"</div>" 你可以報告這樣的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM