2011-07-19 187 views
0

我想要獲取如果客戶端發出某個控制器操作請求時將發送的html。不過,我想從服務器上做到這一點。我想將這個原始html存儲在數據庫中,以備日後使用。如何才能做到這一點?抓取html頁面

編輯:我需要用的響應,以及發送的臨時演員,樣式,腳本等......

+2

Downvotes?這是一個不尋常的但非常有效的問題。不要因爲你無法弄清楚而退縮。 – providence

回答

1

您可以通過使用在Ruby中

url = URI.parse('http://www.example.com/index.html') 
req = Net::HTTP::Get.new(url.path) 
res = Net::HTTP.start(url.host, url.port) {|http| 
    http.request(req) 
} 
body_html = res.body 

NET::HTTP庫獲取HTML然後,您可以將body_html保存到您的數據庫對象中。

問題是,這會返回客戶端會得到的html。在「真實」世界中,瀏覽器然後解析這個HTML,然後爲樣式表,腳本,圖像分別發出HTTP請求。你需要做同樣的事情,然後將它們存儲在單獨的數據庫對象中。

這個問題爲您提供了一些工具,可以幫助與分析部分:警告Method to parse HTML document in Ruby?

字:我懷疑,你想做什麼將是一個困難許多比你想象的。對你想要完成的事情給予一些好的想法,如果這是達到目標的最佳方法。