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