我想要獲取如果客戶端發出某個控制器操作請求時將發送的html。不過,我想從服務器上做到這一點。我想將這個原始html存儲在數據庫中,以備日後使用。如何才能做到這一點?抓取html頁面
編輯:我需要用的響應,以及發送的臨時演員,樣式,腳本等......
我想要獲取如果客戶端發出某個控制器操作請求時將發送的html。不過,我想從服務器上做到這一點。我想將這個原始html存儲在數據庫中,以備日後使用。如何才能做到這一點?抓取html頁面
編輯:我需要用的響應,以及發送的臨時演員,樣式,腳本等......
我希望,我就不會做到這一點,因爲它似乎有點哈克,但這可以通過將所需的HTML到部分,然後調用
render :partial => '/the/partial'
請參閱此鏈接來實現更多的細節:
http://www.justinbritten.com/work/2008/10/rendering-rails-partials-in-a-model-or-background-task/
編輯:在上面的鏈接只描述的方法的工作原理預導軌3.對於導軌3時,使用一個AbstractController實現渲染。
您可以通過使用在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?
字:我懷疑,你想做什麼將是一個困難許多比你想象的。對你想要完成的事情給予一些好的想法,如果這是達到目標的最佳方法。
Downvotes?這是一個不尋常的但非常有效的問題。不要因爲你無法弄清楚而退縮。 – providence