2013-04-03 66 views
1

我正在解析网页,我想通过找到<div id="image">来获得<img src>的链接。用Nokogiri解析节点?

如何在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 

任何想法?

+0

什么是你的失败?你使用的是什么代码? – dpassage

回答

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 
+0

这很棒!我必须仔细看看css方法。感谢:) – user1310856

+0

快速问题,我如何快速转换价值我得到一个字符串,所以我可以操纵它?编辑:发现你只是在对象上使用方法文本。 txt = img.text – user1310856

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,当你可以。它速度非常快。

+0

我编辑了我的答案以反映您的修改。 –