我正在尝试使用 Jsoup 解析 HTML 页面并发现一些奇怪的问题。该页面是:http ://www.filmaffinity.com/en/film290741.html并且您可以看到格式不正确。它有一些我猜可能会影响解析的问题。通过 Firebug 和 Chrome,我获得了我正在寻找的元素的 XPath(页面中的 5.8 速率)。
铬指出:
/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr[1]/td/table[1]/tbody/tr/td[2]/table/tbody/tr[2]/td
虽然 Firebug 指出:
/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td
唯一的区别是 Chrome 中的1在 Firebug 中不显示。我已经手动验证了路径并且它是正确的。
然后我在 Jsoup 中将 xpath 转换为 CSS 查询,以便稍后提取特定元素:
Element rate=doc.select("html body table:nth-child(2) tbody tr td:nth-child(2) table tbody tr td table tbody tr td:nth-child(2) table tbody tr:nth-child(2) td")
代码的执行并没有正确定位我,而是 Firebug 在 XPath 中引用的元素:
wrong:/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[15]/td[2]
right:/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td
从最后开始,第一个区别是:
/td /table/tbody/tr[15]/td[2]
它需要第一个元素而不是第二个元素。
有没有办法解决这类问题?问题是否与 html 格式不正确有关,或者我是否缺少其他一些可用于解决此问题的 Jsoup 技术?
我选择 Jsoup 是因为它应该能够处理格式不正确的 Html。我要求太高了吗?
Jsoup 有什么替代品可以解决这类问题吗?