未写入文件的对象数组

时间:2018-05-20 15:51:00

标签: javascript node.js

我正在使用梦魇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),它就会有数据。我在这里做错了什么?

已编辑以获取更多信息

0 个答案:

没有答案