【问题标题】:nokogiri run well but doesn't return anythingnokogiri 运行良好,但没有返回任何内容
【发布时间】:2021-09-24 08:53:14
【问题描述】:

您好,感谢您的阅读!

我正在学习如何使用 xpath 和 nokogiri,并且我遵循了与 the tutorial on Engine Yard 相同的说明。

我复制/粘贴完全相同的代码,它在终端上运行良好并结束(不返回错误消息)但没有返回任何内容。它应该返回所有带有超链接的标题,但实际上它只是结束了,就像没有什么可以返回一样。

require 'open-uri'
require 'nokogiri'

doc = Nokogiri::HTML(URI.open("http://www.google.com/search?q=doughnuts"))

doc.xpath('//h3/a').each do |node|
    puts node.text
end

# puts doc.class

我尝试了puts doc.class 而不是puts node.text,它做了同样的事情(运行良好,没有错误结束,什么也不返回)

我也尝试过puts doc.class 而不是

doc.xpath('//h3/a').each do |node|
    puts doc.class
end

它返回良好:“Nokogiri::HTML::Document”所以问题来自我的 xpath 但我不知道为什么......

如果有人可以帮助我,我会很高兴! :)

【问题讨论】:

    标签: ruby xpath nokogiri


    【解决方案1】:

    查看 google 页面结构,'h3' 元素位于 'a' 元素内。你可以尝试这样的事情。我认为它会起作用。

    require 'open-uri'
    require 'nokogiri'
    
    doc = Nokogiri::HTML(URI.open("http://www.google.com/search?q=doughnuts"))
    
    doc.xpath('//h3').each do |node|
      puts node.text
      puts node.parent.xpath('./@href')
    end
    

    【讨论】:

    • 会的!非常感谢 ! :)
    • 如果对您有帮助,请将答案标记为有用。
    • 很遗憾我不能:我需要至少 15 个声望才能投票,但我的反馈已被记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2018-07-30
    相关资源
    最近更新 更多