我想構建一個簡單的網站,它可以下載網頁www.example.com/index.html
並在客戶端請求時將其快照存儲在服務器上。我正在考慮使用命令wget
來下載網頁。 Ruby on Rails能夠處理這個任務嗎?通過Ruby on Rails使用wget
回答
是的。您可以執行shell commands in Ruby via back ticks, exec and system。需要注意的是每一個返回的東西稍有不同:
反勾
wget http://www.yahoo.com
exec
:exec('wget http://www.yahoo.com')
system
:system('wget http://www.yahoo.com')
This blog post似乎與你想要做的一樣。
此外,也有這樣幾個了不起的Ruby庫:
- mechanize與mechanize download - 看看這個railscast
- httparty - 一個more-difficult-to-use http library周圍簡單的包裝。一旦獲得響應主體,您將需要將其保存到數據庫或文件中。
- typhoeus - 簡單的機構,能製作的http請求並行,如果你需要這樣的能力
他們將提供一個更好的清潔Ruby接口用於處理與來自各種請求回數據。
測試所有這些選項的最佳方法是使用Rails控制檯。轉到您的Rails應用程序和類型的根目錄:
rails c
一旦在控制檯中,你可以模擬實際的服務器調用。
在您的控制檯中運行wget
會將文件放到Rails根目錄中,這不是您想要的。 tmp
是此類事物的標準目錄。可以動態地生成基於URL像這樣的路徑:
# tmp directory
path = Rails.root.join('tmp')
# create sub-directory as md5 hash based on URL
sub_dir = Digest::MD5.hexdigest(url)
# append sub_dir on the path
destination_path = path.join(sub_dir)
system("wget -P #{destination_path} #{url}")
一定要還包括從this post
謝謝!讓我花一些時間來回答你的答案。 順便說一句,一旦我使用'exec' /'system'執行'wget',如何指定服務器上放置文件的位置?你提到的 –
[博客文章](http://blogforever.eu/blog/2011/05/21/creating-a-snapshot-of-a-blog-post-using-wget/)絕對不可思議。這應該幾乎取代了靜態頁面分析器ruby gems的一半。 –
- 1. Ruby On Rails Mongoid Group通過
- 2. has_many通過Ruby on Rails應用程序
- 3. Ruby on Rails,:通知
- 4. 如何通過Ruby on Rails消除FOUC?
- 5. 通過HTTPS Ruby on Rails進行POST
- 6. Ruby on Rails,Low Pro和JQuery(通過JRails)
- 7. ruby on rails has_many通過關係
- 8. 渲染通過AJAX在Ruby on Rails的
- 9. 在Ruby on Rails中通過json POST
- 10. Ruby on Rails的:通過搜索協會
- 11. Ruby on Rails has_many:通過多態關聯
- 12. Ruby on Rails的:如何通過jQuery
- 13. Ruby on Rails的,通過控制
- 14. Ruby on Rails:多has_many:通過可能嗎?
- 15. Ruby on Rails的 - 通過推遲任務
- 16. Ruby on Rails隨機發布通過acts_as_taggable_on_steroids
- 17. Ruby on Rails教程測試未通過
- 18. Ruby on Rails的 - 重定向/通過行動使不起作用
- 19. redirect_uri_mismatch。使用Ruby on Rails通過Google登錄
- 20. Ruby on Rails通過代理使用javascript發佈到API
- 21. Ruby on Rails的:validation_presence_of使用
- 22. 使用Ruby on Rails的
- 23. 使用Ruby on Rails模型
- 24. Ruby on Rails - 使用時間
- 25. Ruby on Rails的使用
- 26. Ruby on Rails的 - 使用AJAX
- 27. Ruby on Rails的RVM使用
- 28. 過濾結果 - Ruby on Rails
- 29. 跳過Ruby on Rails驗證
- 30. 入門使用Ruby和Ruby on Rails的
的選項快照,你的意思是一張圖片,或底層的HTML? –
嗯,我的意思是底層html和任何與該頁面相關的圖片/樣式表(即使用wget的-p選項)。 –