有没有办法使用 Nightmare 或类似工具来访问 json 响应?

Is there a way, using Nightmare or similar, to access the json response?

我有一个类似于 this 的问题,我正在使用 Nightmare 登录页面并在其中导航。在此页面中,一些请求获得 json 响应以填充数据(在“网络”选项卡中看到)。有什么方法可以访问此 json 而不是解析页面本身吗?

var Nightmare = require('nightmare');
const nightmare = Nightmare({ show: true });
nightmare
    .goto('https://my.url/')
    .type('#user_id', 'myUserId')
    .type('#password', 'passw0rd')
    .click('#button-login')
    .wait(3000)
    .goto('specific-url') // this URL loads a page with some data
    .end()
    .then(console.log)    // this prints stuff like HTTP response: OK
    .catch((error) => {
    console.error('Search failed:', error);
});

感谢任何帮助。谢谢

我无法自己测试这个,因为我没有使用 Nightmare 或安装节点,但根据我读过的内容 here,这可能会成功:

var Nightmare = require('nightmare');
const nightmare = Nightmare({ show: true });
nightmare
    .goto('https://my.url/')
    .type('#user_id', 'myUserId')
    .type('#password', 'passw0rd')
    .click('#button-login')
    .wait(3000)
    .goto('specific-url') // this URL loads a page with some data
    .wait(1000)
    .evaluate(() => {
        var jsonUrl = 'needs to contain the address of the JSON backend';
        var filename = './json-result.json';
        var file = fs.createWriteStream(filename);
        var request = http.get(jsonUrl, function (response) {
          response.pipe(file);
        });
      }
    )
    .end()
    .then(console.log)    // this prints stuff like HTTP response: OK
    .catch((error) => {
      console.error('Search failed:', error);
    });

这要求您有一个正在调用的静态 URL,然后将 return JSON 响应。如果您需要传递额外的参数,您最好在 evaluate() 块内使用 XMLHttpRequest,如 here.

所述