【问题标题】:Jsoup: getting table with space in class name [duplicate]Jsoup:在类名中获取带有空格的表[重复]
【发布时间】: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的内容,我注意到它需要另一个类为&lt;table class="table-main top-event"&gt;的页面的表。

由于在类名class=" table-main" 中有一个空格,我进行了其他尝试,例如doc.select("table[class= table-main]");,但这返回了一个 0 大小的元素。

我试图查看 HTML 代码,并注意到没有类名为“table-main”的表。可能是这个原因吗?

【问题讨论】:

  • 不应将空格视为类名的一部分。 Elements e = doc.select("table.table-main") 应该返回具有类table-main所有 表,但这并不排除表还有其他类如&lt;table class="table-main top-event"&gt; 的情况。如果你想选择只有你的班级的桌子,试试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 解析文件。跨度>

标签: java html parsing jsoup


【解决方案1】:

首先,看起来 HTML 是无效的 id="tournamentTable! 而不是 id="tournamentTable"。这可能会给 JSOUP 解析器带来一些困难。

其次,如果您尝试选择示例中引用的锦标赛表,那么我建议您按 id 而不是 css 类进行选择:doc.select("#tournamentTable")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多