2

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

4

4 回答 4

4

更新:关于“获取并使用所有其他资源(如图像、CSS、字体等)做某事”的其他可能含义,我最近在 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();
  });
于 2013-10-15T06:21:02.937 回答
1

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

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

注意:请设置page.captureContent = [/.*/]“正文”以显示在响应中。有关此的更多信息:这里

于 2014-06-26T08:46:04.740 回答
1

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

于 2012-08-24T07:52:16.710 回答
0

SlimerJS 不能在较新版本的 FireFox 上工作,因此对我没有好处。

这个答案解释了如何在 2019 年末从今天的 XHR 获取响应正文

于 2019-09-30T12:55:53.177 回答