我正在使用以下代码使用 phantomjs 截取页面的屏幕截图。它适用于大多数页面,但对某些 URL 显示“操作已取消”错误。
var page = require('webpage').create(),
system = require('system');
page.viewportSize = {
width: 1366,
height: 800
};
page.onConsoleMessage = function(msg) {
console.log("CONSOLE MESSAGE:" + msg);
};
page.onResourceError = function(resourceError) {
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
page.open(<URL>, function(status) {
if (status !== 'success') {
console.log('FAIL to load the address');
phantom.exit();
} else {
page.render("3.png");
phantom.exit();
}
});
console.log("opening");
一些 URL 不起作用的示例是:http://india.gov.in
等http://timesofindia.indiatimes.com/
。
对于india.gov.in
对 url 的第一个请求:http: //india.gov.in/正在中途重新发送,并且所有现有操作都在它之前被取消。其他一些 URL 也会发生类似的情况。
页面是否正在刷新?如果是,我该如何处理?
如何在 phantomjs 中遵循重定向/重新加载?
进一步的调查给了我一些更有趣的统计数据。在 india.gov.in 期间,phantomjs 在某一时刻开始发送请求并接收响应(在发出请求 id: 之后118
),待处理请求的数量为37
. 幻影“取消”了待处理的请求并从头开始加载页面。它再次开始发送请求。
在请求 id 之后156
,待处理请求的数量再次增加37
(这次它只收到一个请求的响应)。所以它再次“取消”了所有待处理的请求,重新开始。
在请求 id 之后194
,待处理请求的数量再次增加,37
因此它再次取消并重新启动。
在请求 id 之后232
,待处理请求的数量再次增加,37
但这次它没有重新启动和取消。
幻象可以处理的待处理请求的数量是否有限制?
谢谢!!
笔记!笔记!注意!:它可以与 phantomjs 2 一起使用。但由于它仍在开发中,因此无法在我的生产设置中使用。有谁知道 1.9.8 和 2.0 之间的更新修复了它吗?我可能会在 1.9.8 的源代码中导入该更改并构建它。