2014-09-11 143 views
3

我在Debian下使用PhantomJS 1.9.7來分析頁面內容。出於某種原因,它停止加載頁面上的任何資源加載失敗。例如,如果無法加載.js文件,則它會以狀態「失敗」結束。所以我得到Phantomjs停止加載整頁

無法加載地址:XXXX由操作引起的page.open()狀態處理程序取消

如何讓PhantomJS繼續加載其他資源,即使其中一些無法加載?

回答

2

SSL很可能是罪魁禍首。你可以嘗試多種command line options修復加載錯誤,如:

page.onResourceRequested = function(requestData, networkRequest){ 
    if (requestData.url.indexOf("yourScript.js") !== -1) { 
     networkRequest.abort(); 
    } 
}; 

--ignore-ssl-errors=true 
--web-security=false 

如果您知道無法加載每次資源,你可以明確地通過聽取onResourceRequested event中止裝載

你也可以看看onResourceError是什麼樣的錯誤。

+1

謝謝你的建議。不幸的是,我不知道資源,直到它被加載和失敗。 禁用網絡安全選項的安全性如何?看來這不是最好的做法,而且相當危險。 – Greg 2014-09-12 13:56:31

0

通過將錯誤打印到控制檯,可以找到失敗的資源。

page.onResourceError = function(resourceError) { 
    console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')'); 
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString); 
}; 

,這應該打印出類似這樣

Unable to load resource (#19URL:http://www.google.com) 
Error code: 5. Description: Operation canceled