Java使用jsoup解析html表中的数据

时间:2019-01-09 17:34:35

标签: java html jsoup

我想从链接中的表中获取数据。

链接:

https://www.nasdaq.com/symbol/aapl/financials?query=balance-sheet

我已经尝试过我的代码,但是没有用

public static void main(String[] args) {
    try {
        Document doc = Jsoup.connect("https://www.nasdaq.com/symbol/aapl/financials?query=balance-sheet").get();
        Elements trs = doc.select("td_genTable");



        for (Element tr : trs) {
            Elements tds = tr.getElementsByTag("td");
            Element td = tds.first();
            System.out.println(td.text());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

有人可以帮助我吗?要使其正常工作

我没有得到该表的输出。什么都没发生。

1 个答案:

答案 0 :(得分:0)

测试完您的代码后,我遇到了Read time out问题。在Google上查看时,我发现this post建议在添加用户代理进行修复,并且对我有用。所以,你可以试试这个

public static void main(String[] args) {
    try {
        // add user agent
        Document doc = Jsoup.connect("https://www.nasdaq.com/symbol/aapl/financials?query=balance-sheet")
                .userAgent("Mozilla/5.0").get();
        Elements trs = doc.select("tr");
        for (Element tr : trs) {
            Elements tds = tr.select(".td_genTable");
            // avoid tr headers that produces NullPointerException
            if(tds.size() == 0) continue;
            // look for siblings (see the html structure of the web)
            Element td = tds.first().siblingElements().first();
            System.out.println(td.text());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我添加了“用户代理”选项并修复了一些查询错误。这对开始工作很有用;)