我在Debian下使用PhantomJS 1.9.7來分析頁面內容。出於某種原因,它停止加載頁面上的任何資源加載失敗。例如,如果無法加載.js文件,則它會以狀態「失敗」結束。所以我得到Phantomjs停止加載整頁
無法加載地址:XXXX由操作引起的
page.open()
狀態處理程序取消
。
如何讓PhantomJS繼續加載其他資源,即使其中一些無法加載?
我在Debian下使用PhantomJS 1.9.7來分析頁面內容。出於某種原因,它停止加載頁面上的任何資源加載失敗。例如,如果無法加載.js文件,則它會以狀態「失敗」結束。所以我得到Phantomjs停止加載整頁
無法加載地址:XXXX由操作引起的
page.open()
狀態處理程序取消
。
如何讓PhantomJS繼續加載其他資源,即使其中一些無法加載?
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
是什麼樣的錯誤。
通過將錯誤打印到控制檯,可以找到失敗的資源。
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
謝謝你的建議。不幸的是,我不知道資源,直到它被加載和失敗。 禁用網絡安全選項的安全性如何?看來這不是最好的做法,而且相當危險。 – Greg 2014-09-12 13:56:31