如果我使用
require 'net/http'
source = Net::HTTP.get('stackoverflow.com', '/index.html')
从url中提取源代码,有没有办法在ruby中查找具有某个类的所有链接元素,然后提取这些url的href
属性并将它们放入数组中? (我知道如何在javascript中执行此操作,但不会在ruby中执行此操作。)
也许我不想使用net/http
?
答案 0 :(得分: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
答案 1 :(得分:2)
答案 2 :(得分: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 :(得分:0)
您可以使用HTML / XML解析器:nokogiri,mechanize
答案 4 :(得分:0)
Hpricot是一个很好的XML / HTML解析器,可用于执行此操作。
答案 5 :(得分:0)
尝试搜索解析HTML / DOM以查找相关结果。我相信那里有很多。