我正在尝试不断更新网页上的数据。在Google Chrome开发人员工具中,我可以看到我的传入数据是通过AJAX请求获得的。
当我点击'得到'文本文件,我可以在Google Chrome中看到我想要的数据。我想使用PhantomJS接收AJAX响应,然后将这些响应保存到文件中。
到目前为止,我有一个程序打开我感兴趣的网页的网址,可以打印出正在接收的网络流量的概述,但我不知道如何保存实际文件当他们进来时。我该怎么做?
到目前为止代码:
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);
答案 0 :(得分:1)
目前,PhantomJS无法做到这一点。它不会在这些回调中公开请求/响应内容。可能的解决方法是:
onResourceReceived
处理程序中创建自己的AJAX请求,并使用fs
模块。XMLHttpRequest
实现编写为代理,以保存响应以便可以获取它们。必须在任何页面JavaScript运行之前注入它。所以page.onInitialized
处理程序效果最好。我写了一篇关于CasperJS的解决方法的文章,但它们可以很容易地转换为与普通PhantomJS一起使用:A: How can I catch and process the data from the XHR responses using casperjs?。