【发布时间】:2011-12-04 01:50:27
【问题描述】:
我正在尝试选择 Wikipedia 的 Google 条目页面上的信息框:http://en.m.wikipedia.org/wiki/Google
所以,我打电话:
contentDiv = document.select("div[id=content]").first();
按预期工作,然后我做:
Elements infoboxes = contentDiv.select("table[class=infobox]");
然后我查看infoboxes.isEmpty(),我震惊地发现它是空的!
我检查并确认元素 contentDiv 包含以下内容:
<table class="infobox vcard" style="width: 22em;" cellspacing="5">
那么,为什么contentDiv.select("table[class=infobox]") 返回空???
更新:我用contentDiv.select("table[class=infobox vcard]") 测试了上面的内容,它工作正常!这很奇怪,因为我知道与只选择 exact 多类元素的 table.infobox.vcard 表示法不同,table[class=infobox] 应该选择所有具有 至少 infobox 的表他们列出的类。
顺便说一句,我用a different Wikipedia entry测试了代码,包含:
<table class="infobox biota" style="text-align: left; width: 200px; font-size: 100%;">
contentDiv.select("table[class=infobox]") 的行为与预期完全一样,将该表格元素作为infoboxes 中的第一项返回。
知道为什么不一致吗?什么可以解释这种奇怪的行为?
有没有可能我只是偶然发现了一个 Jsoup 错误?
(我使用的是 jsoup-1.5.2,不是最新的,但我不需要 HTML5 支持,由于各种原因我无法立即升级到最新的 1.6.1)。
【问题讨论】:
标签: java css-selectors html-parsing jsoup