2012-01-12 40 views
9

我想刮一些網頁,動態加載其組件。 此頁面有一個onload腳本,我可以在瀏覽器中輸入URL後3-5秒看到整個頁面。如何使機械等待網頁'全部'加載?

問題是,當我撥打br.open('URL')時,響應是網頁在0秒。 HTML(我想要)和br.open('URL')的結果之間有3-5秒的時間差。

回答

1

使用豐富的javascripts內容與機械化工作的網頁並不容易,但是根據不同的情況有很多方法可以獲得您想要的內容。

  • 如果一些JSON的請求,以創建內容,那麼你可以調用URL和嘗試解析響應獲取內容,然後嘗試適當加入。

  • 如果您需要使用某些表單,您可以創建一些表單字段並在機械化中設置它們的值。或者,只需編寫一個方法,將編碼POSTGET數據(引用特殊字符等),並用mechanize.browser.open方法發送它們。

  • 如果頁面有一些基於JavaScript的安全功能(如一些特殊的編碼,以形成張貼之前的數據),那麼你可以使用node.js像JavaScript應用服務器來處理一些JavaScript代碼塊。

但事實上,上面的一些選項並不容易,而且在使用這種項目的機械化之前,您必須考慮三次。

11

你遇到的問題是,網頁通過JavaScript引擎呈現在你的網頁瀏覽器中。但是,機械化本身無法自行執行JavaScript,因此,無論您等待多久,您都不會僅僅使用機械化來獲取缺少的HTML。

有關如何動態生成內容的更多信息,請查看此question

+0

非常感謝! :) – planetes853 2012-01-12 10:26:18

+0

那麼有沒有其他的圖書館來瀏覽有動態呈現的網站? – planetes853 2012-01-12 10:28:03

+0

請查看我答案中的鏈接。 – jcollado 2012-01-12 10:31:42