Ruby 为什么这个Nokogiri XPath有空返回?

Ruby 为什么这个Nokogiri XPath有空返回?,ruby,xpath,nokogiri,Ruby,Xpath,Nokogiri,我正在和NOKOGIRI浏览一个网页。我熟悉XPath,但我不明白为什么XPath无法提取特定行。请参阅ruby代码 我使用FireBug XML来验证我的XPath,因此我99%确信我的XPath是正确的 require 'nokogiri' require 'open-uri' @searchURL = 'http://www.umn.edu/lookup?UID=smit4562' @xpath = '//html/body/p/table/tbody/tr/td[2]/table/tb

我正在和NOKOGIRI浏览一个网页。我熟悉XPath,但我不明白为什么XPath无法提取特定行。请参阅ruby代码

我使用FireBug XML来验证我的XPath,因此我99%确信我的XPath是正确的

require 'nokogiri'
require 'open-uri'

@searchURL = 'http://www.umn.edu/lookup?UID=smit4562'
@xpath = '//html/body/p/table/tbody/tr/td[2]/table/tbody/tr[2]'

doc = Nokogiri::HTML(open(@searchURL))

puts 'row should be = Email Address: smit4562@umn.edu'
puts '=> ' + doc.xpath(@xpath).to_s

puts 'is row emppty?'
puts '=> ' + doc.xpath(@xpath).empty?().to_s
标记是一个可选标记,如果省略它,它是隐式的。这意味着
标记在不存在时由浏览器自动插入。它们不在示例中的源代码中,所以nokogiri不知道它们

Firebug使用生成的DOM,它确实包含
tbody
元素,因此该语句在浏览器中并不匹配


卸下两个
t车身
选择器,您应该会没事。

差不多,但方向是正确的。Nokogiri似乎也在纠正无效的
嵌套。我发现地址本身带有
//html/body/table/tr/td[2]/table/tr[2]/td/a