2011-03-09 95 views
2

我想用ruby/rails從網站上覆制一些特定的內容。 我需要的內容是在一個marquee html標籤內,除以div。 如何使用ruby訪問此內容? 更確切地說 - 我想使用某種紅寶石gui(最好是鞋子)。 我該怎麼做?如何使用Ruby/Rails從網站獲取內容?

+0

你想完成什麼?你想刮另一個網站,並將內容插入數據庫?你只是想在用戶界面中顯示一些遠程內容嗎? – Intelekshual 2011-03-09 18:44:06

回答

1

這是不是一個真正的Rails的問題。這是你使用Ruby做的事情,然後可能使用Rails或Sinatra或Padrino顯示 - 挑選你的毒藥。

有幾種不同的HTTP客戶端可以使用:

開URI帶有Ruby和是最容易的。 Net :: HTTP隨附Ruby,是標準工具箱,但是它的層次較低,所以你需要做更多的工作。 HTTPClient和Typhoeus + Hydra能夠進行線程化並具有高級和低級接口。

我推薦使用Nokogiri來解析返回的HTML。它功能非常全面和強大。

require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open('http://www.example.com')) 

puts doc.to_html 

如果需要通過登錄畫面中進行導航或填寫表格,你得到你需要解析頁面之前,那麼我建議你看機械化。它在內部依賴於Nokogiri,所以你可以要求它獲得一個Nokogiri文檔,並在Mechanize獲取所需的URL後解析掉。

如果您需要處理動態HTML,請查看各種WATIR工具。他們駕駛各種網頁瀏覽器,然後讓您訪問瀏覽器所看到的內容。

一旦你有了你想要的內容或數據,你就可以在Rails頁面中「重新調整」它的內容。

1

如果我要正確理解,你需要一個GUI界面的網站刮板。如果是這樣,你可能必須自己建造一個。

刮一個網站最簡單的方法是使用nokogiri或機械化寶石。基本上,您將爲這些庫提供該網站的地址,然後使用其XPath功能從DOM中選擇文本。

https://github.com/sparklemotion/nokogiri

https://github.com/sparklemotion/mechanize(用於文檔)

+0

提供的鏈接已損壞,你可以更新它們嗎? – Alfie 2015-01-20 09:09:20

+2

當然,老闆 – 2015-01-20 16:20:14

+0

非常感謝.. :) – Alfie 2015-01-20 16:48:45