如何使用Ruby on Rails操作DOM

and*_*wan 6 dom ruby-on-rails

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

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

谢谢.. :)

更新

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

该步骤的摘要是:

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

-对不起,我的英语不好-

Dam*_*IEU 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
Run Code Online (Sandbox Code Playgroud)

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


Mik*_*bee 1

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

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

当您的蜘蛛浏览页面时,它会将它们传递给 gecko 的嵌入式实例,您可以在其中使用getCompulatedStyle来提取单个元素恰好是什么颜色。

您最初提到想要在这个项目中使用 Ruby on Rails,Rails 是一个用于编写演示应用程序的框架,并且确实不适合这样的项目。

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