如何使用Ruby on Rails操作DOM

时间:2009-10-23 03:29:53

标签: ruby-on-rails dom

正如标题所说,我有一些DOM操作任务。例如,我想: - 找到所有具有蓝色的H1元素。 - 找到所有大小为12px的文本。 - 等..

如何使用Rails执行此操作?

谢谢.. :))

更新

我一直在做一些关于根据本文提取网页内容的研究 - > http://www.springerlink.com/index/A65708XMUR9KN9EA.pdf

该步骤的摘要是:

  1. 获取我想要提取的网址(单个网页)
  2. 根据一些视觉规则从网页中抓取一些元素(例如:抓住所有 H1,其中有蓝色
  3. 使用我的算法处理元素
  4. 将结果保存到我的数据库中。
  5. - 我的英语不好 -

3 个答案:

答案 0 :(得分:9)

如果你要做的是在rails应用程序中操作HTML文档,你应该看一下Nokogiri

它使用XPath搜索文档。通过以下内容,您可以在文档中找到任何带有“blue”css类的h1。

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open('http://www.stackoverflow.com'))
doc.xpath('//h1/a[@class="blue"]').each do |link|
    puts link.content
end

之后,如果您尝试做的事情确实在解析当前页面dom,那么您应该看看JavaScript和JQuery。 Rails不能那样做。

答案 1 :(得分:2)

答案 2 :(得分:1)

为了可靠地整理网页上任意元素的颜色,您需要对浏览器进行反向工程(以准确地考虑样式表,标记黑客,损坏的标签,图像等)。

更简单的方法是将现有的浏览器(例如gecko)嵌入到自制的自定义应用程序中。

当您的蜘蛛浏览页面时,它会将它们传递给您嵌入的壁虎实例,您可以使用getComputedStyle来提取单个元素的颜色。

你最初提到过想在这个项目中使用Ruby on Rails,Rails是一个用于编写表示应用程序的框架,并且非常适合这样的项目。

作为一个起点,我建议您查看RubyGnome,特别是RubyGnome的Gtk::MozEmbed功能。