2011-07-20 14 views
0

私はURLからソースコードを抽出するためにルビーと特定のクラスを持つHTML要素を選択する方法はありますか?

require 'net/http' 

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

を使用する場合は、方法は、特定のクラスを持つすべてのリンク要素を見つけるために、その後、それらのURLのhref属性を抽出するために、ルビーでは、そこにあると配列にそれらを置きますか? (私はJavaScriptでなく、ルビーでこれを行うだろうか知っている。)

おそらく、私はnet/httpを使用したくありませんか? 、鋸山

答えて

0

あなたがHTML/XMLパーサを使用することができます。

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 

NB:コードが最適化されていない、あなたはそれを改善したい場合はそうHpricotのドキュメントを読んで、Nokogiriはあなたのために完璧になるように)

3

は私にね。

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 
関連する問題