phantomjs页面抓取失败时返回失败原因

我有这么一个phantomjs脚本,用于抓取网页的标题。

var page = require('webpage').create();

page.open(phantom.args[0], function(status) {

if (status == 'success') {

var title = page.evaluate(function() {

return document.title;

});

console.log(title)

phantom.exit(0);

} else {

console.log(status);

phantom.exit(1);

}

});

有的时候,抓取网页会失败,它会打印出来一个fail,但没有打印fail的原因。

根据官方文档,原因不会传到callback里面,得自己写一个新的callback加到page的事件里面,代码如下:

var page = require('webpage').create();

page.onResourceError = function(e) {

page.reason = e.errorString;

}

page.open(phantom.args[0], function(status) {

if (status == 'success') {

var title = page.evaluate(function() {

return document.title;

});

console.log(title)

phantom.exit(0);

} else {

console.log(status, 'reason: ', page.reason);

phantom.exit(1);

}

});

这个时候如果出错了,就会清楚地打印出原因了,如:fail reason: Host not found。

2014年10月21日