Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XPath使用HTML刮削有什么特别的考虑吗?_Html_Ruby_Xpath_Nokogiri_Web Scraping - Fatal编程技术网

使用XPath使用HTML刮削有什么特别的考虑吗?

使用XPath使用HTML刮削有什么特别的考虑吗?,html,ruby,xpath,nokogiri,web-scraping,Html,Ruby,Xpath,Nokogiri,Web Scraping,我试图使用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"> 它适用于其他较短的路径,但对于此

我试图使用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">
它适用于其他较短的路径,但对于此特定情况,它仅返回
“”


为什么会发生这种情况?我遗漏了什么,或者是因为一些bug导致了一个有趣的Nokogiri行为?欢迎使用任何指针。

标签可能不在那里。
有些浏览器在不存在时会添加它们,但Nokogiri不会。

标签可能实际上不存在。
有些浏览器在不存在时会添加它们,但Nokogiri不会添加。

您能发布一些(完整的)示例标记供我们试验吗?如果是长的,就给它要点。不,除了XPath看起来特别脆弱之外,没有什么特别要考虑的。如果可能的话,您应该关注页面的更多语义方面(如
id
class
属性)。正如@d11wtq所说的,您需要向我们展示一个真正的XML使用示例。谢谢大家!它实际上是mozilla添加的
tbody
标记,它最初并不存在。如果您将其从XPath中删除,它会起作用。您可以发布一些(完整的)示例标记供我们使用吗?如果是长的,就给它要点。不,除了XPath看起来特别脆弱之外,没有什么特别要考虑的。如果可能的话,您应该关注页面的更多语义方面(如
id
class
属性)。正如@d11wtq所说的,您需要向我们展示一个真正的XML使用示例。谢谢大家!它实际上是mozilla添加的
tbody
标记,它最初并不存在。如果你把它从xpathI中移除,它也会工作。你可以在这里看到我的堆栈溢出问题:正确,一些浏览器添加了
tbody
,这就像是在转移注意力。在构建XPath访问器时,最好查看源文本,而不是依赖浏览器生成访问器。删除
tbody
标记是有效的。该死的浏览器(在这种情况下是mozilla)!谢谢你,我也有这个问题。你可以在这里看到我的堆栈溢出问题:正确,一些浏览器添加了
tbody
,这就像是在转移注意力。在构建XPath访问器时,最好查看源文本,而不是依赖浏览器生成访问器。删除
tbody
标记是有效的。该死的浏览器(在这种情况下是mozilla)!谢谢你,帕瓜迪里奥:)
#!/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