无法使用Phantom JS从特定网址捕获屏幕截图

时间:2018-03-18 16:01:51

标签: javascript jquery phantomjs

我想要进行屏幕截图,但页面没有完全加载。我测试了其他网址没有问题但是我不能用这个网址。 我使用phantomjs-2.1.1-windows。 在链接下你可以看到它: http://www.irmood.com/twitter-1.png 我检查了page.onError没有错误

var webpage = require('webpage').create();
    webpage.viewportSize = { width: 1280, height: 800 };
    webpage.scrollPosition = { top: 0, left: 0 };
    webpage.open('https://www.bershka.com/tr/en/woman/shoes/view-all-c1010224033.html', function(status) {
      if (status === 'fail') {
        console.error('webpage did not open successfully');
        phantom.exit(1);
      }
      var i = 0,
          top,
          queryFn = function() {
            return document.body.scrollHeight;
          };
      setInterval(function() {
        var filename = 'twitter-' + (++i) + '.png';
        console.log('Writing ' + filename + '...');
        webpage.render(filename);
        top = webpage.evaluate(queryFn);
        console.log('[' + i + '] top = ' + top);
        webpage.scrollPosition = { top: top + 1, left: 0 };

        if (i >= 5) {
          phantom.exit();
        }

      }, 3000);
    });

1 个答案:

答案 0 :(得分:0)

一些网页如bershka.com在加载DOM后使用XHR加载html块。 Phantom在DOM加载状态下捕获了网页,它错过了其余的http请求,因为它不再执行JS了。

在您的代码中,每隔3秒就会截取一次屏幕截图。你看到twitter- [2~5] .png图片与twitter-1.png相比有什么变化吗?