【问题标题】:Phantomjs fail to load the addressPhantomjs 加载地址失败
【发布时间】:2015-04-20 18:20:47
【问题描述】:

感谢 PhantomJS,我正在尝试抓取此网页:https://www.koshkamashkaeshop.com/fr/28-robes-Koshka-Mashka 但每次都加载失败。我以为是因为https。 这是我的 .sh 代码:

phantomjs  --ignore-ssl-errors=yes test.js

这是我的 test.js 代码:

page.open(url, function (status) {

var content = page.evaluate(function()
 {
  if (status !== 'success') {
     console.log('FAIL to load the address');
  }else{

  }
 }
)})

【问题讨论】:

  • 您有什么 PhantomJS 版本,当您使用 --ssl-protocol=any 选项调用 PhantomJS 时页面会加载吗?
  • 我有 1.9 版本。我试过 --ssl-protocol=any 但不工作

标签: javascript ssl web-scraping phantomjs


【解决方案1】:

我知道这是旧的,但我得到了同样的错误

phantomjs --debug=yes --ignore-ssl-errors=true --ssl-protocol=any --web-security=true rasterize.js url output.pdf

信用:https://github.com/ariya/phantomjs/issues/10178

【讨论】:

    【解决方案2】:

    这与Phantomjs connection to Facebook fails SSL handshake 中描述的问题相同:Phantomjs 默认使用 SSL 3.0,并且许多站点都禁用了 SSL 3.0。你需要使用

     phantomjs  --ssl-protocol=any test.js
    

    【讨论】:

    • SSL 部分适用于 1.9.0。但是SSL连接后似乎还有进一步的问题。
    【解决方案3】:

    page.evaluate() 是 PhantomJS 中的沙盒页面上下文。它无法访问外部定义的变量。此外,如果您想从页面上下文中查看控制台消息,您需要注册到page.onConsoleMessage 事件。在这种情况下,您不需要页面上下文。

    另外一个问题是 PhantomJS 版本 --ssl-protocol=tlsv1 命令行选项。

    使用 PhantomJS 1.9.0 的工作代码:

    page.open(url, function (status) {
      console.log("status: " + status);
      phantom.exit();
    });
    

    当然,如果你真的想将状态传递到页面上下文中,你需要明确地传递它:

    page.onConsoleMessage = function(msg){
        console.log("page: " + msg);
    };
    page.open(url, function (status) {
        page.evaluate(function(status){
            console.log("status: " + status);
        }, status);
        phantom.exit();
    });
    

    【讨论】:

      【解决方案4】:

      如果是 https,请尝试运行

      phantomjs --ssl-protocol=TLSv1.1 <filename.js> 
      

      此外,将用户代理添加到代码中。

      例如

       var page = require('webpage').create();
       page.settings.userAgent = 'SpecialAgent';
      
       page.open(url,function(status){}
      

      这对我有用。 :)

      【讨论】:

        猜你喜欢
        • 2021-12-08
        • 2018-04-08
        • 1970-01-01
        • 2011-03-04
        相关资源
        最近更新 更多