JSoup:难以提取单个元素

JSoup: Difficulty extracting a single element

对于我的大学编码项目,我的任务是从互联网上获取比特币的实时价值并将其整合到一个 mini 中 "bitcoin program."问题是我很难从某些人那里提取比特币的价值网站。任何帮助将不胜感激。

我试过使用不同的网站,结果好坏参半。

示例 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 的结果是 java.lang.NullPointerException 在 com.mycompany.test.Test.main(Test.java:28)

示例 2 运行 没有错误。

站点 https://www.coindesk.com/price/bitcoin 在呈现内容时严重依赖 JavaScript。 Jsoup 无法执行 JavaScript。它只能解析原始 HTML 文档。
要查看 Jsoup 看到的内容,请尝试在禁用 JavaScript 的情况下访问此页面。您会看到该页面缺少主要内容。或者访问此页面并按 Ctrl+U 在 JavaScript 修改之前检查页面源代码。
使用 Chrome 的调试器(网络选项卡),您可以看到它发出额外的 AJAX 请求,以从 URL 获取 JSON 中的当前汇率:https://production.api.coindesk.com/v1/exchangeRates
然后 JavaScript 用于为该数据创建动态 HTML 元素。它还请求其他几个 URL 来获取图形数据。

Jsoup 无法解析此页面,因为在具有 react-app ID 的 div 中有一个额外的 "</div>"。您可以报告 this

这样的错误