我正在处理一个涉及从具有多个HTML表的特定站点中提取表的项目。这是一张图片,用红框突出显示我要提取的特定表格:
我的代码:
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();
}
但是,在选择表时,此代码会返回索引超出范围的错误。降低索引将从页面中拉出其中一个表格,我不确定如何选择我想要的特定表格。
答案 0 :(得分:0)
有问题的表是通过AJAX异步加载的。这就是为什么你得到索引超出范围的例外。在加载初始URL时,该表根本不在DOM中。您应该使用浏览器开发人员工具分析页面加载,并找到加载所需数据的AJAX调用。获取所需信息的另一种方法是使用不同的技术(如selenium webdriver)来加载内容。 Selenium webdiver将执行JavaScript,因此它将加载并呈现整个页面,包括所有加载AJAX的内容。祝你好运。