使用phantomjs来读取响应体

时间:2012-08-17 16:51:29

标签: phantomjs

有没有办法用phantomjs请求资源并能够到达响应的正文?

4 个答案:

答案 0 :(得分:4)

更新:关于“获取并使用图像,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();
  });

答案 1 :(得分:1)

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

答案 2 :(得分:1)

使用slimmerjs。所有'phantomjs'代码也适用于'slimmerjs'。

更多信息here。注意最后的body属性,目前仅适用于slimmerjs。

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

答案 3 :(得分:0)

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

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