我想抓取一個網站的內容似乎是在JavaScript或其他技術的工作。我正在使用xpath來查找頁面上的內容。我可以在瀏覽器中看到使用螢火蟲的內容,但如果我通過curl/wget保存源代碼或下載源代碼,內容從頁面中丟失。這怎麼可能 ?提前基於JavaScript的網站如何不同?
0
A
回答
1
一些內容
感謝通過JS動態加載。您需要以某種方式運行JS,例如在像PhantomJS這樣的無頭瀏覽器中運行幾秒鐘以加載動態內容。然後運行DOM,類似於jQuery中的.html()
這樣做,以獲取呈現的內容。
據我所知,這是類似於他們的代理人how Opera Mini does it他們重新編碼並將其發送到您的設備之前:
服務器響應發送回正常 - 當這是由接收Opera轉碼服務器,他們解析標記和樣式,執行JavaScript,並將數據轉碼爲Opera二進制標記語言(OBML)。這個OBML數據由Opera Mini在用戶設備上逐步加載。
的Opera Mini的入門from Wikipedia:
的JavaScript只會暫停前的一對夫婦的小型服務器上運行秒,由於資源的限制。
根據Opera Mini 4的文檔,在將頁面發送到移動設備之前,其onLoad事件被觸發,所有腳本最多允許執行兩秒鐘。 setInterval和setTimeout函數被禁用,因此在執行之前等待一段時間的腳本根本不會執行。腳本完成或達到超時後,所有腳本都會停止並且頁面被壓縮併發送到移動設備。
0
通常,頁面加載並請求以json或jsonp形式返回的內容(ajax)。這通常是非常方便的,因爲json比html更容易解析。
但是,如果您之前沒有做過,那麼確定如何製作正確的ajax請求可能是一項挑戰。
相關問題
- 1. 基於PHP的網站如何提供不同版本的網站?
- 2. 網頁搜刮基於javascript的網站
- 3. 基於網站在Magento如何獲得基於網站在Magento
- 4. 如何刮基於Flash的網站?
- 5. 如何複製基於PHP的網站?
- 6. 如何測試基於Ajax的網站?
- 7. 如何使用Windows窗體登錄基於JavaScript的網站?
- 8. Joomla基於微型網站的URL的不同默認頁面
- 9. 如何在PHP codeigniter中創建不同的基於會員的網站?
- 10. 如何在IIS7最佳的設置不同版本的網站(基於HTTPS)
- 11. 基於Ajax的OpenGraph網站
- 12. 基於閃光的網站
- 13. 基於網頁域名/網站的Javascript命令/變量
- 14. 相同的JavaScript不同的網站,截然不同的表現
- 15. 如何刪除index.html基於angularjs網站上的網址
- 16. 如何爲網站的不同部分分開JavaScript代碼?
- 17. 如何通過JavaScript讀取兩個不同的網站
- 18. javascript下拉菜單:如何鏈接到不同的網站?
- 19. 如何讓不同的網站登錄
- 20. 關於如何保持網站偏好的不同選項?
- 21. 如何在joomla網站中限制基於網站的IP地址?
- 22. 如何爲基於html的fanpage和基於php的網站使用相同的數據庫?
- 23. 如何去調用一個基於JavaScript的外部網站形式
- 24. 使用不同的WordPress主題取決於不同的網站?
- 25. 基於會員的網站的網站地圖
- 26. 基於IIS的網站(.Net)的網站統計程序
- 27. 基於ColdFusion中的REST的網站
- 28. 基於ajax的網站的php爬蟲?
- 29. 基於Symfony2的網站中的.htaccess
- 30. 基於CSS的網站的FWA
許多框架(如Angular.js和Backbone.js)都會使頁面的源看起來與實際顯示的不同。您將希望嘗試使用Chrome開發人員工具捕獲*渲染* DOM(我還沒有發現Mozilla開發人員工具在這方面非常有用) –
謝謝,如何在這種情況下以編程方式獲得完整的DOM? – ankit