【问题标题】:Why does Phantomjs not work with this site?为什么 Phantomjs 不适用于此站点?
【发布时间】:2023-03-11 16:07:02
【问题描述】:

我是 phantomjs 的新手,我正在使用版本 2.5.0-development 进行测试。我使用了脚本screen.js 它适用于 http://phantomjs.orghttps://google.com 但不适用于https://globo.comhttps://uol.com.br 我无法理解我做错了什么没有出现错误。

screen.js

var page = require('webpage').create();
page.open('https://www.globo.com', function() {
  page.render('globo.png');
  phantom.exit();
});

编辑: 我尝试了旧版本 2.1.1,它工作正常。问题似乎是版本。

【问题讨论】:

    标签: javascript phantomjs


    【解决方案1】:

    正如 phantomjs 页面上提到的 - http://phantomjs.org/ - PhantomJS 开发已停止,此时它已经过时了。 PhantomJS 基本上相当于一个 6-7 岁的浏览器,不支持很多当前的 JS/CSS(let、const、flexbox、grid layout 等),并且有在不支持的 JS 功能时不报错的坏习惯(如letconst)在页面的资产中使用,而只是忽略那些JS 文件。切换到像无头 Chrome 这样更现代的东西会更好。

    【讨论】:

    • 这可能不是一个仓促的习惯,而只是为了符合IE8兼容的浏览器,jk
    • 我试过 chrome 但速度很慢。我会再试一次。
    • @BrunoAndrade 慢有时比不可用要好
    • @BrunoAndrade 因为答案中没有提到无头浏览器,所以这里是 Google 维护的无头浏览器:npmjs.com/package/puppeteer
    • @GetOffMyLawn puppeteer 不是浏览器 - 它是 Chrome/Chromium 的 JS 接口
    【解决方案2】:

    我认为您必须在页面加载之前稍等片刻。尝试添加设置超时,例如:

    var page = require('webpage').create();
    page.open('https://www.globo.com', function() {
      setTimeout(function(){
         page.render('globo.png');
         phantom.exit();
      }, 5000); // Change timeout as required to allow sufficient time 
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 2014-09-27
      • 2011-09-20
      • 2015-07-18
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多