【问题标题】:Using phantomjs to read the response body使用 phantomjs 读取响应正文
【发布时间】:2012-08-17 16:51:29
【问题描述】:

有什么方法可以使用 phantomjs 请求资源并能够访问响应的正文?

【问题讨论】:

    标签: phantomjs


    【解决方案1】:

    更新:关于“获取并使用所有其他资源(如图像、CSS、字体等)做某事”的其他可能含义,我最近在博客上写了 how to do this in SlimerJS。我相信从 1.9.1 开始,在 PhantomJS 中执行此操作的唯一方法是应用补丁并重新编译。


    也许我误解了你所说的“响应体”是什么意思,或者它比这个问题最近被添加到 PhantomJS,但它就像这样简单:

    var page = require('webpage').create();
    var url = 'http://google.com/';
    page.open(url,function(){
      console.log(page.content);
      phantom.exit();
      });
    

    (顺便说一句,使用page.plainText 来获取它没有HTML标签。)

    如果您只想要<body> 标记内容,<head> 都不是可用于获取响应的任何部分的替代方法:

    var page = require('webpage').create();
    var url = 'http://google.com/';
    page.open(url,function(){
      var html = page.evaluate(function(){
        return document.getElementsByTagName('body')[0].innerHTML;
        });
      console.log(html);
      phantom.exit();
      });
    

    【讨论】:

    • 我认为这与访问 ajax 响应或 javascript 加载的图像等有关。这当然是把我带到这里的原因。
    【解决方案2】:

    这是目前 PhantomJS 的一大问题。开放(截至撰写时)票位于http://code.google.com/p/phantomjs/issues/detail?id=158,到目前为止,还没有可靠的解决方案。这适用于收集您的请求数据以及响应数据,因此您无法收集您提交的帖子数据,然后使用类似 CasperJS 下载的方案重新发送。

    【讨论】:

      【解决方案3】:

      使用slimmerjs。您所有的“phantomjs”代码也可以与“slimmerjs”一起使用。

      更多信息here。请注意末尾的 body 属性,该属性目前仅适用于 slimmerjs。

      注意:请设置page.captureContent = [/.*/] 以使“正文”显示在响应中。更多信息:here

      【讨论】:

        【解决方案4】:

        SlimerJS 无法在较新版本的 FireFox 上运行,因此对我没有好处。

        This answer 解释了如何在 2019 年末从今天的 XHR 获取响应正文

        【讨论】:

          猜你喜欢
          • 2021-02-13
          • 1970-01-01
          • 2017-12-18
          • 2016-05-03
          • 1970-01-01
          • 2015-10-10
          • 2013-07-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多