使用Nokogiri解析节点?

时间:2013-04-03 16:11:52

标签: ruby nokogiri

我正在解析网页,我希望通过找到<img src>来获取<div id="image">的链接。

我如何在Nokogiri做到这一点?我尝试遍历子节点,但它失败了。

<div id="image" class="image textbox ">
  <div class="">
    <img src="img.jpg" alt="" original-title="">
  </div>
</div>

这是我的代码:

doc = Nokogiri::HTML(open("site.com"))

doc.css("div.image").each do |node|

    node.children().each do |c|

    puts c.attr("src")
    end     

end 

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这是一个很好的资源:http://ruby.bastardsbook.com/chapters/html-parsing/

稍微修改一个例子,我明白了:

doc = Nokogiri::HTML(open("site.com"))

doc.css("div.image img").each do |img|

    puts img.attr("src")

end 

虽然您可以使用ID选择器#image,而不是类选择器.image。它速度非常快。

答案 1 :(得分:0)

试试这个,让我知道它是否适合你

require 'nokogiri'

source = <<-HTML
 <div id="image" class="image textbox ">
   <div class="">
     <img src="img.jpg" alt="" original-title="">
   </div>
 </div>
HTML

doc = Nokogiri::HTML(source)

doc.css('div#image > div > img').each do |image|
  puts image.attr('src')
end

输出:

img.jpg