Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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
Angularjs 如何在任何网站上正确使用PhantomJS?_Angularjs_Node.js_Phantomjs_Node Webkit - Fatal编程技术网

Angularjs 如何在任何网站上正确使用PhantomJS?

Angularjs 如何在任何网站上正确使用PhantomJS?,angularjs,node.js,phantomjs,node-webkit,Angularjs,Node.js,Phantomjs,Node Webkit,我正试图用PhantomJS来捕获一个网站,尤其是我正在使用的upar 本网站有: 安格拉斯 本地存储使用 对API的AJAX请求 所以,我在本地测试,没有得到预期的结果,有时屏幕截图会出现错误-呈现部分内容,有时无法呈现完整的内容 一旦网站加载完毕,寻呼机似乎没有足够的时间拍摄截图。我已经添加了延迟选项,但无论如何都会失败,事实上,我可以说没有延迟选项效果更好 这就是它应该呈现的内容: 当它工作得最好时,我得到的是: 这是我的渲染代码: var pageres = new Page

我正试图用PhantomJS来捕获一个网站,尤其是我正在使用的upar

本网站有:

  • 安格拉斯
  • 本地存储使用
  • 对API的AJAX请求
所以,我在本地测试,没有得到预期的结果,有时屏幕截图会出现错误-呈现部分内容,有时无法呈现完整的内容

一旦网站加载完毕,寻呼机似乎没有足够的时间拍摄截图。我已经添加了延迟选项,但无论如何都会失败,事实上,我可以说没有延迟选项效果更好

这就是它应该呈现的内容:

当它工作得最好时,我得到的是:

这是我的渲染代码:

  var pageres = new Pageres({})
      .src('fantastica.a2015.mediotiempo.com', ['1440x900'], {delay: 3, crop: false});

  pageres.on('warn', function (err,obj) {console.log(err,obj)});
  pageres.run(function (err, screenshot) {
      screenshot[0].pipe(response);
  });

有什么特别的建议吗
  • 请注意幻影版本之间的差异 Phantom 1.9.x(Pageres正在使用)是几年前的浏览器引擎(Chrome 13是最接近的等价物),不会呈现HTML5的许多功能

    Phantom 2.x是一个更加现代的webkit引擎。但是因为:a)因为他们没有生产现成的linux二进制文件;b) 一些小的API更改,如CasperJS和Pagers等项目正在阻碍对其的支持。根据中的一条评论,如果您制作自己的二进制文件,并将其符号链接到该文件,则该文件可以正常工作

    还要注意SlimerJS是基于Firefox而不是WebKit的PhantomJS的替代品。没有类似的基于Blink的项目(获取现代Chrome如何呈现它们的屏幕截图),但是IE有一些小技巧(不过Pagers页面称,该项目的目标不是支持其他引擎)

    • 等待DOM元素出现,而不是使用延迟
    Ajax调用、延迟加载等使得事情很难预测。因此,输入一个轮询循环,直到屏幕截图中所需的DOM元素现在可见,才拍摄屏幕截图。对于这种情况,CasperJS具有
    waitForSelector()
    。PhantomJS的级别稍低一些
    waitFor()


    我认为pageres需要一些黑客来添加这一功能。

    除了phantomjs的功能有限外,但我认为延迟3s太低。pageres目前(确切地说,截至2016年1月26日)正在使用Phantom2.x,在无头chrome就绪后,他们将转向使用Phantom2.x