2013-04-03 90 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

我編輯了我的答案以反映您的修改。 –