0

我是手动做的,然后我卡住了,我不知道为什么它不起作用。我下载了 xpather,它给了我: /html/body/center/table/tbody/tr[3]/td/table 作为我想要的项目的路径。我已经手动确认这是正确的,但是当我将它粘贴到我的代码中时,它所做的只是返回 nil

这是我的代码:

a = parentdoc.at_xpath("//html/body/center/table/tbody/tr[3]/td/table[1]")
puts a

如果我做这样的事情:

a = parentdoc.at_xpath("//html/body/center")
puts a

我从页面中获得大量文本。我可以继续添加元素,直到我点击 tbody 然后它再次返回 nil。我什至尝试过类似的东西: //html/body/center/table/*/tr[3] 并且做了同样的事情返回 nil

我错过了什么?

4

1 回答 1

2

您的问题是 Firefox 正在插入<tbody>HTML 中不存在的元素。当您使用 xpather 时,它使用浏览器正在使用的 HTML(而不是 ycombinator.com 返回的原始 HTML)并找到以下路径:

//html/body/center/table/tbody/tr[3]/td/table

Nokogiri 将使用原始 HTML,所以你想要这个

//html/body/center/table/tr[3]/td/table

当我将该 XPath 应用于您评论中的 URL 时:

doc.at_xpath('//html/body/center/table/tr[3]/td/table').text

我得到这个输出:

"csoghoian 1 hour ago  | link | parent2 responses:1. Chrome is the only major browser not to ...
于 2011-09-24T21:53:16.910 回答