Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 幻影不';不要渲染页面_Javascript_Phantomjs - Fatal编程技术网

Javascript 幻影不';不要渲染页面

Javascript 幻影不';不要渲染页面,javascript,phantomjs,Javascript,Phantomjs,今天我在许多网站上做了一些研究,为了避免手动查看,我准备了phantomjs,使用提出的解决方案来渲染它们。没什么特别的。在网站数组中循环并呈现所有生成的页面 奇怪的是,有些网站没有被正确呈现。其中,我有一个: 为了简化,我创建了另一个只运行此页面的脚本: var page = require('webpage').create(); page.viewportSize = { width: 1920, height: 960 }; page.clipRect = { top: 0, left

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

奇怪的是,有些网站没有被正确呈现。其中,我有一个:

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

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();
});

它的结尾没有截图。与其他任何一个测试,并完美地工作我忽略了什么吗?

它不会呈现屏幕截图,因为页面最初没有
,因此没有要呈现的内容。在PhantomJS的onLoadFinished事件触发后,所有内容(包括主体)都通过JavaScript加载

您需要等待一段时间,以便加载完整的页面。对我来说,简单的5秒钟等待就足够了:

page.open('http://www.telegraaf.nl/', function(status) {
    setTimeout(function(){
        page.render("screenshot.png");
        phantom.exit();
    }, 5000);
});
当然,您可以以更为奇特的方式等待,以使其更为健壮,并且不要等待太久:



您可能需要使用
--ignore ssl errors=true
运行PhantomJS(如果PhantomJS成功了,可能还需要使用
--ssl protocol=any
)(虽然我在11个有问题的网站中有8个网站需要等待30秒,但我的连接速度可能非常慢)。作为参考,我不需要在这些情况下使用
--ignore ssl errors
标志,但最好保持设置以防万一。谢谢!我也不需要忽略ssl错误,但我注意到日志中有一些请求错误(见下图),所以我添加了命令行选项,它们就消失了。30秒有点多。也许你可以通过自定义广告阻止缩短几秒钟。通过
页面.onResourceRequested
事件,你可以根据自定义条件中止一些请求,如请求的域。在浪费一整天的时间添加cliArgsCap.add之后(“--ignore ssl errors=true”)帮助我解决了此问题。有些人认为此ssl问题不允许正确加载页面。但FF/Chrome工作正常