无法使用jsoup从网站中提取表格

时间:2017-05-30 01:59:07

标签: java html parsing html-table jsoup

我正在处理一个涉及从具有多个HTML表的特定站点中提取表的项目。这是一张图片,用红框突出显示我要提取的特定表格:

Image

我的代码:

String html = "https://finance.yahoo.com/quote/GOOG/analysts?p=GOOG";
try {
    Document doc = Jsoup.connect(html).get();
    Element tableElements = doc.select("table").get(7);

    for (Element row : tableElements.select("tr")) {
        Elements tds = row.select("td");
        for (int j = 0; j < tds.size(); j++) {
            System.out.println(tds.get(j).text());
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

但是,在选择表时,此代码会返回索引超出范围的错误。降低索引将从页面中拉出其中一个表格,我不确定如何选择我想要的特定表格。

1 个答案:

答案 0 :(得分:0)

有问题的表是通过AJAX异步加载的。这就是为什么你得到索引超出范围的例外。在加载初始URL时,该表根本不在DOM中。您应该使用浏览器开发人员工具分析页面加载,并找到加载所需数据的AJAX调用。获取所需信息的另一种方法是使用不同的技术(如selenium webdriver)来加载内容。 Selenium webdiver将执行JavaScript,因此它将加载并呈现整个页面,包括所有加载AJAX的内容。祝你好运。