【发布时间】:2017-02-26 20:13:18
【问题描述】:
我是 Jsoup 的新手,对 HTML 不是很熟悉。我正在尝试从网站的表格中获取一些数据。
如果我检查我需要的表格上的元素(来自 Chrome),我会得到:
<table class=" table-main" id="tournamentTable!>
<colgroup>...</colgroup>
<tbody>...</tbody>
</table>
当我运行命令时
Elements e = doc.select("table.table-main");
然后打印e的内容,我注意到它需要另一个类为<table class="table-main top-event">的页面的表。
由于在类名class=" table-main" 中有一个空格,我进行了其他尝试,例如doc.select("table[class= table-main]");,但这返回了一个 0 大小的元素。
我试图查看 HTML 代码,并注意到没有类名为“table-main”的表。可能是这个原因吗?
【问题讨论】:
-
不应将空格视为类名的一部分。
Elements e = doc.select("table.table-main")应该返回具有类table-main的所有 表,但这并不排除表还有其他类如<table class="table-main top-event">的情况。如果你想选择只有你的班级的桌子,试试doc.select("table[class=table-main]");(没有空格) -
您是否在禁用 JavaScript 的情况下检查了 chrome 中的源代码?请记住,jsoup 不支持 JavaScript。说明实际的网址,否则我们只是猜测。
-
@Pshemo:这是我发帖前的尝试之一,但没有成功
-
@FredericKlein 我刚刚检查过问题是 JavaScript。禁用它,我看不到我感兴趣的表。所以,如果 Jsoup 不支持 JavaScript,你能建议我另一个支持 JavaScript 的库吗?如果它可能有用,这是链接oddsportal.com/tennis/argentina/atp-buenos-aires/results 谢谢
-
对于纯 Java 方法,请查看 HtmlUnit。文档部分有一个使用 HtmlUnit 与 jsoup 结合使用的教程:stackoverflow.com/documentation/jsoup/4632/… 如果其他工具/语言没有问题,我会尝试 phantomJS 获取呈现的 html 源,然后使用 jsoup 解析文件。跨度>