gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:37:23 25 4
gpt4 key购买 nike

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

当我点击“获得”文本文件时,我可以在 Google Chrome 中看到我想要的数据。我想使用 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 运行之前注入(inject)。所以 page.onInitialized 处理程序效果最好。

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

关于javascript - 如何使用 PhantomJS 保存 AJAX 请求的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com