使用phantomjs抓取动态页面遇到的timeout超时问题

原文地址是,http://xiaorui.cc

phantomjs无意是强大的无界面的webkit浏览器工具,但是对于有些网站来说,他的返回过慢了点。 

我这边是在服务端控制超时的时间,gevent subprocess的组合,但是因为subprocess和我的另一组逻辑有些冲突,所以把超时的逻辑改到了 js 文件里面。 


var system = require('system');
var args = system.args;
var url = args[1];

var page = require('webpage').create();
page.settings.resourceTimeout = 5000; // 5 seconds
page.onResourceTimeout = function(e) {
    console.log(e.errorCode);   // it'll probably be 408
    console.log(e.errorString); // it'll probably be 'Network timeout on resource'
    console.log(e.url);         // the url whose request timed out
    phantom.exit(1);
};


page.open(url, function(status) {
    if (status === 'success') {
        var html = page.evaluate(function() {
            return document.documentElement.outerHTML;
        });
        console.log(html);
    }
    phantom.exit();
    });
//$phantomjs xx.js http://bbs.pcbaby.com.cn/topic-2149414.html

另外提下,phantomjs 可以预先加cookie的。

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

phantom.addCookie({
  'name'     : 'Valid-Cookie-Name',   /* required property */
  'value'    : 'Valid-Cookie-Value',  /* required property */
  'domain'   : 'localhost',
  'path'     : '/foo',                /* required property */
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
});


 



大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注