在ruby,httparty,rest-client等中有很多http請求工具,但其中大多數只獲取頁面本身。有沒有一種工具可以像瀏覽器一樣獲取頁面的html,javascript,css和圖片?如何在ruby中獲取頁面的所有資源
0
A
回答
0
Anemone想到了,但它不是爲了做一個單一的頁面而設計的。如果你有時間設置它,它是有能力的。
使用像Nokogiri這樣的HTML解析器來檢索頁面的內容並不困難。您可以迭代感興趣的標籤,獲取其「SRC」或「HREF」參數並請求這些文件,將其內容存儲在磁盤上。
一個簡單的,未經檢驗和書面上的即時,例如使用引入nokogiri和OpenURI是:
require 'nokogiri'
require 'open-uri'
html = open('http://www.example.com').read
File.write('www.example.com.html', html)
page = Nokogiri::HTML(html)
page.search('img').each do |img|
File.open(img['src'], 'wb') { |fo| fo.write open(img['src']).read }
end
獲取CSS和JavaScript是有點難度,因爲你必須確定他們是否被嵌入在頁面或資源中,需要從其來源中檢索。
僅僅下載HTML和內容很容易。創建獨立版本的頁面並從本地緩存讀取內容要困難得多。您必須重寫所有「SRC」和「HREF」參數以指向磁盤上的文件。
如果您希望能夠在本地緩存站點,那更糟的是,因爲您必須重新調整頁面中的所有錨點和鏈接以指向本地緩存。此外,你必須編寫一個完整的網站蜘蛛,它足夠聰明,可以呆在網站內,不會遵循多餘的鏈接,服從網站的ROBOTS文件,並且不會消耗你的所有帶寬或者他們的帶寬,並且被禁止或被起訴。
隨着任務的增長,您還必須考慮如何組織所有文件。將一個頁面的資源存儲在一個文件夾中是sl,but but的,但卻是簡單的方法。在一個文件夾中將兩頁資源存儲成爲一個問題,因爲您可以爲不同的圖像或腳本或CSS產生文件名衝突。此時,您必須使用多個文件夾,或者切換到使用數據庫來跟蹤資源的位置,並使用唯一標識符重命名它們,並將它們重寫回保存的HTML,或編寫一個可以解決這些請求的應用程序,以及返回正確的內容。
相關問題
- 1. 如何獲取資源文件中所有資源的名稱
- 2. 「Right」REST URL獲取所有資源中的所有資源?
- 3. csproj:如何獲取所有資源?
- 4. 如何獲取其上的所有對象上的Ruby頁面
- 5. 如何獲取資源列表中的所有圖像?
- 6. 如何獲取Facebook頁面RSS訂閱源(所有人)
- 7. 如何在資源所有者的OpenID Connect Authorize Endpoint中沒有同意頁面?
- 8. Ruby Webdriver。從頁面中的元素獲取所有'數據'值
- 9. JavaEE6 + REST:如何在運行時獲取所有REST資源?
- 10. Azure的資源管理器 - 獲取資源組的所有資源
- 11. 獲取所有嵌套資源記錄
- 12. 獲取所有頁面上
- 13. 獲取所有頁面API
- 14. 獲取API中的所有頁面
- 15. matweb.com:如何獲取頁面的源?
- 16. 如何獲取具有已知資源名稱的資源ID?
- 17. 如何在Azure資源組中沒有標籤的情況下獲取所有Azure資源
- 18. 如何在Android中獲取ImageView資源
- 19. 如何在build.gradle中獲取資源值?
- 20. Silverlight中的頁面資源
- 21. 如何取消一個頁面並在php中提取所有鏈接資源的url?
- 22. 如何使用Ruby on Rails獲取特定網站的所有頁面
- 23. 使用Azure Java SDK獲取資源組中可用的所有資源
- 24. 如何獲取特定網站中的所有頁面鏈接?
- 25. 如何使用PHP獲取html頁面中的所有href值
- 26. 如何獲取頁面中的所有應用程序鏈接?
- 27. 如何使用JSoup獲取頁面中的所有url圖像?
- 28. 如何獲取asp.net mvc項目中所有頁面的列表
- 29. 如何從DOM中的頁面獲取所有鏈接?
- 30. 如何獲取Wikipedia頁面中的所有URL
此頁面是本地的到您的應用程序,還是野外? – 2013-03-04 16:03:30
目的是什麼?換句話說,你想要做什麼,以及爲什麼是Ruby?像wget這樣的東西可能會滿足您的需求,這取決於您的實際需求。否則,這是一個遞歸問題,或使用瀏覽器驅動程序或無頭瀏覽器。它還取決於您是否需要運行JavaScript,例如用於動態加載的內容。 – 2013-03-04 16:04:35
這很明顯,目的是從網站下載整個頁面。由於大多數頁面充斥着版權保護的材料,因此意圖更難以理解,但OP所做的就是業務。 – 2013-03-04 16:16:08