2013-05-16 48 views
0

我想抓取一個網站的內容似乎是在JavaScript或其他技術的工作。我正在使用xpath來查找頁面上的內容。我可以在瀏覽器中看到使用螢火蟲的內容,但如果我通過curl/wget保存源代碼或下載源代碼,內容從頁面中丟失。這怎麼可能 ?提前基於JavaScript的網站如何不同?

+0

許多框架(如Angular.js和Backbone.js)都會使頁面的源看起來與實際顯示的不同。您將希望嘗試使用Chrome開發人員工具捕獲*渲染* DOM(我還沒有發現Mozilla開發人員工具在這方面非常有用) –

+0

謝謝,如何在這種情況下以編程方式獲得完整的DOM? – ankit

回答

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請求可能是一項挑戰。

相關問題