phantomjs不呈现页面

时间:2015-11-12 17:52:18

标签: javascript phantomjs

我今天在很多网站上做了一些研究,为了避免手动查看它们,我准备了phantomjs来使用建议的here解决方案来渲染它们。没什么特别的。循环遍历网站数组并渲染所有生成的页面。

有些奇怪的是,有些网站没有正确呈现。其中,我有这个:http://www.telegraaf.nl/

为简化起见,我创建了另一个只运行此页面的脚本:

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

page.viewportSize = { width: 1920, height: 960 };
page.clipRect = { top: 0, left: 0, width: 1920, height: 960 };

page.open('http://www.telegraaf.nl/', function(status) {
  page.render("screenshot.png");
  phantom.exit();
});

它没有截图。与任何其他人一起测试,并且完美地工作。 我忽视了什么吗?

1 个答案:

答案 0 :(得分:7)

它不会呈现屏幕截图,因为该页面最初没有<body>,因此无法呈现。在PhantomJS的onLoadFinished事件触发后,所有内容(包括正文)都通过JavaScript加载。

您需要等待一整页加载。一个简单的5秒等待对我来说已经足够了:

page.open('http://www.telegraaf.nl/', function(status) {
    setTimeout(function(){
        page.render("screenshot.png");
        phantom.exit();
    }, 5000);
});

你当然可以用更花哨的方式等待,以使其更强大,而不是等待太久:phantomjs not waiting for “full” page load

您可能需要使用--ignore-ssl-errors=true运行PhantomJS(如果是PhantomJS&lt; 1.9.8,则可能--ssl-protocol=any