如何附加到文件而不重复(for循环)?

时间:2018-01-23 20:21:22

标签: javascript node.js httprequest

所以我想将links数组中的所有内容追加到文本文件中:links.txt。问题是它将循环所经历的迭代次数追加到所有时间。我已经尝试将fs.appendFileSync放在外面,但我需要它来追求请求。

以下是代码:

for (i = 1; i < 3; i++) {
var options = {
    uri: 'https://www.collegeconfidential.com/dean/page/' + i,
    transform: function(body) {
        return cheerio.load(body);
    }
};
rp(options).then(function($) {
    $('main#main > article.post').each(function() {
        // Fetches each question title, link, and adds a new line
        var maintxt = $(this).find('h3.entry-title > a');
        console.log("Question: " + maintxt.text().trim() + '\n' + "Link: " + maintxt.attr('href') + '\n\n');
        questions.push(maintxt.text().trim());
        links.push(maintxt.attr("href"));

    });
                // console.log(questions);
                // console.log(links);
}).then(function ($) {
    fs.appendFileSync('links.txt', links);
    console.log(links);
}).catch(function(err) {
    // Crawling failed or Cheerio choked...
    console.log('Crawling failed or Cheerio choked')
});
}

1 个答案:

答案 0 :(得分:0)

虽然这个循环并不理想......如果你不想修改数组,你可以在数组中附加最后添加的链接。

替换:

fs.appendFileSync('links.txt', links);

使用:

fs.appendFileSync('links.txt', links[links.length-1]+'\n');