2014-10-28 84 views
1

我试图用使用捕捉例如PhantomJS page.open冻结

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    page.render('github.png'); 
    phantom.exit(); 
}); 

的代码工作正常,我的本地机器上,使用Ubuntu 14.04 PhantomJS打开一个网站。但是当我在虚拟服务器上运行代码时,回调从不会被调用,并且脚本不会退出。服务器和本地机器运行完全相同的设置。我在2个不同的服务器上用VMWare和Virtuozzo虚拟化了它。

由于所有请求都成功,因此它似乎不是网络错误。

+0

耶设置UserAgent解决了这个问题。我永远不会想出这个。谢谢! – DarthMax 2014-10-28 15:20:45

+0

好吧,你似乎在使用PhantomJS 1.9.8? – 2014-10-28 15:24:09

+0

Jip我正在使用最新版本1.9.8 – DarthMax 2014-10-28 15:25:10

回答

0

其实UserAgent引起了所有的麻烦。 @ artjom-b指出我这个问题Taking reliable screenshots of websites? Phantomjs and Casperjs both return empty screen shots on some websites。唯一的区别是对于我来说,图像文件从未被创建过。

所以设置的UserAgent与

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36'; 

实际上解决了这个问题。