为什么这个Nokogiri XPath的返回值为null?

我正在使用NOKOGIRI浏览网页。 我熟悉XPath,但我无法弄清楚为什么我的XPath无法获取特定行。 请参阅ruby代码。

我使用FireBug XML来validation我的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元素,因此语句在浏览器中匹配。

删除两个tbody选择器,你应该没事。