Я не мог проверить это сам, так как я не использовал Nightmare или установленный узел, но исходя из того, что я прочитал здесь , это может помочь:
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-адрес, который будет возвращать ответ JSON.Если вам нужно передать дополнительные параметры, вам лучше использовать XMLHttpRequest внутри блока evaluate()
, как описано здесь .