【发布时间】:2011-11-17 03:12:46
【问题描述】:
我正在尝试使用 Nokogiri 和 xpath 从 HTML 中的某个位置抓取数据。我使用的 xpath 是:
/html/body/table/tbody/tr[2]/td/table/tbody/tr[2]/td[2]
xpath 指向:
<td class="anatxt" nowrap=""> CELL TXT DATA <div id="div0" style="visibility: hidden; position: absolute">
代码很简单:
#!/usr/bin/ruby -w
require 'rubygems'
require 'nokogiri'
page1 = Nokogiri::HTML(open('test1.html'))
a = page1.xpath("/html/body/table/tbody/tr[2]/td/table/tbody/tr[2]/td[2]").text
p a
它适用于其他较短的路径,但仅针对这种特定情况返回 ""。
为什么会发生这种情况?我错过了什么,或者由于某些错误而有一个有趣的 Nokogiri 行为?欢迎大家指点。
【问题讨论】:
-
你能发布一些(完整的)示例标记供我们试验吗?如果它很长,请给出它。 gist.github.com
-
不,没有什么特别需要考虑的,只是您的 XPath 看起来异常脆弱。如果可能,您应该锚定页面的更多语义方面(如
id和class属性)。正如@d11wtq 所说,您需要向我们展示一个要使用的 XML 的真实示例。 -
谢谢大家!它实际上是由 mozilla 添加的
tbody标签,它最初并不存在。如果您从 xpath 中删除它,它会起作用
标签: html ruby xpath nokogiri web-scraping