require 'net/http'
source = Net::HTTP.get('stackoverflow.com', '/index.html')
從URL中提取的源代碼,是有辦法,在Ruby中,找到與某一類的所有鏈接元素,然後提取這些網址的href
屬性,把它們放在一個數組中? (我知道我會如何做到這一點在JavaScript,但不是在紅寶石。)
也許我不想用net/http
?
require 'net/http'
source = Net::HTTP.get('stackoverflow.com', '/index.html')
從URL中提取的源代碼,是有辦法,在Ruby中,找到與某一類的所有鏈接元素,然後提取這些網址的href
屬性,把它們放在一個數組中? (我知道我會如何做到這一點在JavaScript,但不是在紅寶石。)
也許我不想用net/http
?
你可以使用HTML/XML解析器:引入nokogiri,機械化
Hpricot是一個很好的XML/HTML解析器,你可以用它來做到這一點。
嘗試搜索解析HTML/DOM以查找相關結果。我確定那裏有一噸。
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文檔,如果你想改善它;)
聽起來好像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