我正在使用梦魇js从网站获取一些数据,然后将其保存在文本文件中。这是我的代码
const Nightmare = require('nightmare');
const fs = require('fs');
const url = 'https://lojaonline.tim.com.br/celulares';
async function getUrls() {
console.log('Extraindo Links...');
const nightmare = new Nightmare({ show: false, gotoTimeout: 999999999, waitTimeout: 999999999 });
var p1 = '51030';
var p2 = '560';
try {
await nightmare.goto(url).wait('input[id="client_check_2"]')
.click('input[id="client_check_2"]')
.wait('input[id="zipcode"]')
.type('input[id="zipcode"]', '51030560')
.click('input[value="OK"]')
.wait('.row.products-list').evaluate(function () {
return Array.from(document.querySelectorAll('a.offer')).map(element => element.href);
}).end()
.then(function (result) {
var listaUrls = Object.values(result);
//adicionar aqui os links com o final 'apenas-aparelho'
var file = fs.createWriteStream('linksTim.txt', { flags: 'w', encoding: 'utf-8', mode: 0666 });
listaUrls.forEach(function (v) {
file.write(v + '\r\n');
});
file.end();
});
} catch (e) {
console.error(e);
}
};
function criarLinkApenasAparelho(link) {
return link.substring(0, url.lastIndexOf('/') + 1) + 'apenas-aparelho' + '\r\n';
}
getUrls();
在evaluate
函数中,我使用offer
类读取所有锚元素并获取其href
属性。
在then()
方法中,我将结果(带有href
值的列表)保存在文本文件中。但是,该文件为空(虽然它已被修改)。
如果我制作一个简单的console.log(listaUrls)
,它就会有数据。我在这里做错了什么?
已编辑以获取更多信息