2009-10-23 86 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