[英]phantomjs doesn't render a page
我今天在许多网站上做了一些研究,为了避免手动查看它们,我准备了phantomjs来使用这里提出的解决方案来渲染它们。 没什么特别的。 循环遍历网站数组并呈现所有生成的页面。
有些奇怪的是,有些网站没有正确呈现。 其中,我有这个: 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();
});
它没有截图结束。 与任何其他人一起测试,并且完美地工作。 我忽略了什么吗?
它不会呈现屏幕截图,因为页面最初没有<body>
,因此无法呈现。 在PhantomJS的onLoadFinished事件触发后,所有内容(包括正文)都通过JavaScript加载。
您需要等待一整页加载。 一个简单的5秒等待对我来说已经足够了:
page.open('http://www.telegraaf.nl/', function(status) {
setTimeout(function(){
page.render("screenshot.png");
phantom.exit();
}, 5000);
});
您当然可以以更花哨的方式等待,以使其更强大,而不是等待太久: phantomjs不等待“完整”页面加载
您可能需要使用--ignore-ssl-errors=true
运行PhantomJS(如果PhantomJS <1.9.8,则可能需要--ssl-protocol=any
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.