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

Javascript 如何使用PhantomJS保存AJAX请求的内容,javascript,ajax,phantomjs,Javascript,Ajax,Phantomjs,我试图在网页上记录不断更新的数据。在GoogleChromeDeveloper工具中,我可以看到传入的数据是通过AJAX请求获得的 当我点击“got”文本文件时,我可以在谷歌浏览器中看到我想要的数据。我想使用PhantomJS来接收AJAX响应,然后将这些响应保存到文件中 到目前为止,我有一个程序,可以打开我感兴趣的网页的URL,并可以打印出正在接收的网络流量的概述,但我不知道如何在实际文件进入时保存它们。我该怎么做 迄今为止的代码: var page = require('webpage').

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

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

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

迄今为止的代码:

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);

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

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

我已经写了一篇关于CasperJS的变通方法的帖子,但是它们可以很容易地转换为与普通的PhantomJS一起使用:。

可能是的副本。虽然这个问题是关于CasperJS的,但是大部分代码都可以直接转换到普通的PhantomJS中。谢谢你的回答,是的,答案可能在另一个问题中。我会调查一下的。