首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PhantomJS保存AJAX请求的内容

如何使用PhantomJS保存AJAX请求的内容
EN

Stack Overflow用户
提问于 2014-10-01 23:19:31
回答 1查看 3.7K关注 0票数 3

我试图记录不断更新的数据在网页上。在工具中,我可以看到传入的数据是通过AJAX请求获得的。

当我点击“got”文本文件时,我可以在中看到我想要的数据。我希望使用PhantomJS来接收AJAX响应,然后将这些响应保存到文件中。

到目前为止,我有一个程序可以打开我感兴趣的网页的URL,并且可以打印出接收到的网络流量的概述,但是我不知道如何保存实际的文件。我该怎么做?

目前为止的代码:

代码语言:javascript
运行
复制
var page = require('webpage').create();
var url = "www.site_of_interest.com";
page.onResourceRequested = function(request) {
      console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function(response) {
      console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);
EN

回答 1

Stack Overflow用户

发布于 2014-10-01 23:37:09

目前,这在PhantomJS中是不可能的。它不公开这些回调中的请求/响应内容。可能的解决办法是:

  • 如果可以重放AJAX请求(对同一个URL的多个请求每次都会产生相同的响应),那么您可以在onResourceReceived处理程序中发出自己的AJAX请求,并使用fs模块将响应保存到文件中。
  • 相同URL的AJAX响应意味着页面中的某些内容会发生更改。您可以编写自定义代码来检查DOM中的这些更改,并推断AJAX请求可能是什么。不一定非得是DOM。也许可以从页面上下文中访问某些JavaScript变量中的数据,或者将其保存在localStorage中。 还可以将自定义XMLHttpRequest实现编写为代理,以保存响应,以便能够抓取响应。必须在任何页面JavaScript运行之前注入它。因此,page.onInitialized处理程序工作得最好。

我已经为CasperJS写了一篇关于这些解决方案的文章,但是它们可以很容易地转换成与普通的PhantomJS:A: How can I catch and process the data from the XHR responses using casperjs?一起使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26152192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档