2009-10-23 89 views
5

正如标题所说,我有一些DOM操作任务。例如,我想要: - 找到所有具有蓝色的H1元素。 - 查找所有尺寸为12px的文字。 - 等。如何使用Ruby on Rails操作DOM

我该怎么用Rails做到这一点?

谢谢.. :)

更新

在此基础上纸 - >http://www.springerlink.com/index/A65708XMUR9KN9EA.pdf

步骤的总结是我一直在做有关提取网页内容的一些研究:

  1. 获取我想提取的网址(单个网页)
  2. 抢基于一些视觉上的规则网页的一些元素(如:抓住所有H1具有蓝色
  3. 过程与我的算法
  4. 元素结果保存到我的数据库。

- 对不起我不好英语的

+0

能否请你展开后,你正在努力实现(你在做什么),这样我可以为你的问题提供更具体的建议是什么?谢谢。 – 2009-10-23 03:55:35

+0

根据您的更新,我建议将您的问题改为如下内容:“如何使用Ruby解析基于视觉标准的HTML文档” – 2009-10-23 05:07:30

回答

1

为了可靠地梳理了网页上的任意元素是什么颜色,你需要逆向工程浏览器(准确地考虑到样式表,标记黑客,破碎的标签,图像等)。

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

由于您的蜘蛛会浏览页面,它会将它们传递给您的壁虎嵌入式实例,您可以使用getComputedStyle来拉取单个元素碰巧出现的颜色。

你最初提到想要为这个项目使用Ruby on Rails,Rails是一个用于编写表示性应用程序的框架,并且对于像这样的项目来说确实很不适合。作为出发点,我建议您查看RubyGnome,尤其是RubyGnome的Gtk::MozEmbed功能。

+0

谢谢,Mike。 它也适用于CSS属性? 例如:我想只选择具有蓝色的H1。 – andrisetiawan 2009-10-23 03:56:09

+0

这不是OP想要的。他希望在服务器端完成所有的处理,而不是在JavaScript中完成。 – 2009-10-23 04:59:32

+0

我在更新之前发布了我的答案(当时确实显示他想要客户端解决方案)。 – 2009-10-23 05:04:03

8

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

它使用XPath来搜索文档。通过以下内容,您可以在文档中找到带有“蓝色”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无法做到这一点。

+0

这也是我最初的方法,但是如果你通读了这篇论文摘要,他并不是要求一个css类的“蓝色”,而是实际上在多个站点上具有蓝色的颜色,这些颜色可能具有不同的CSS和标记方案。 – 2009-10-23 17:36:40