ruby - 为什么这个 Nokogiri XPath 返回 null?

标签 ruby xpath nokogiri

我正在使用 NOKOGIRI 对网页进行 XPath 处理。我熟悉 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: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="285b45415c1c1d1e1a685d4546064d4c5d" rel="noreferrer noopener nofollow">[email protected]</a>'
puts '=> ' + doc.xpath(@xpath).to_s

puts 'is row emppty?'
puts '=> ' + doc.xpath(@xpath).empty?().to_s

最佳答案

<tbody> tag 是一个可选标签,如果省略则为隐式标签。这意味着<tbody>当标签不存在时,浏览器会自动插入标签。它们不在您的示例的源代码中,因此 nokogiri 不知道它们。

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

删除 tbody选择器,你应该没问题。

关于ruby - 为什么这个 Nokogiri XPath 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9156650/

相关文章:

ruby - 与 ruby​​ 和 Nokogiri HTML 不兼容的编码

html - 你能用ruby nokogiri使用通配符搜索html属性吗

ruby - 访问模块中包含的 ruby​​ 方法的符号

ruby-on-rails - Date 与 ActiveSupport::TimeWithZone 的比较失败

ios - 安装 Cocoapods 0.35.0 时出错

xpath 获取所有子文本

xml - 为什么XSLT不喜欢我的XPath查询?

ruby - HTTParty认证问题

xpath - 如何检查文本值是否存在

ruby-on-rails - 在表单提交之前 Mechanize 检查所有单选按钮