2011-07-20 100 views
0

如果我使用有沒有辦法用ruby選擇某個類的html元素?

require 'net/http' 

source = Net::HTTP.get('stackoverflow.com', '/index.html') 

從URL中提取的源代碼,是有辦法,在Ruby中,找到與某一類的所有鏈接元素,然後提取這些網址的href屬性,把它們放在一個數組中? (我知道我會如何做到這一點在JavaScript,但不是在紅寶石。)

也許我不想用net/http

回答

0

你可以使用HTML/XML解析器:引入nokogiri,機械化

0

Hpricot是一個很好的XML/HTML解析器,你可以用它來做到這一點。

1
require 'open-uri' 
require 'hpricot' 

source = open('stackoverflow.com/index.html').read # get raw html 

doc = Hpricot(source) # parse with Hpricot 
links = doc.search("//a[@class~='foo_bar']").collect { |a| a[:href] } # search for all links with 'foo_bar' class and then collect array of links 

注:代碼沒有經過優化,所以閱讀角度來說,Hpricot文檔,如果你想改善它;)

3

聽起來好像Nokogiri將是您的最佳選擇。

require 'nokogiri' 
require 'openuri' 

doc = Nokogiri::HTML(open('http://stackoverflow.com/index.html')) 
doc.xpath('//h3/a[@class="foo"]').each do |element| 
    # do something with element 
end 
相關問題