有没有办法选择具有ruby的某个类的html元素?

时间:2011-07-20 05:13:28

标签: javascript html ruby-on-rails ruby get

如果我使用

require 'net/http'

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

从url中提取源代码,有没有办法在ruby中查找具有某个类的所有链接元素,然后提取这些url的href属性并将它们放入数组中? (我知道如何在javascript中执行此操作,但不会在ruby中执行此操作。)

也许我不想使用net/http

6 个答案:

答案 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)

使用Mechanize并查看this页。

答案 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以查找相关结果。我相信那里有很多。

How to manipulate DOM with Ruby on Rails