【问题标题】:Node - Array not emptying节点 - 数组未清空
【发布时间】:2021-07-30 19:01:08
【问题描述】:

我正在进行一个抓取项目。

当我从一个站点 scrape 将所有数据发送到 JSON 时,问题是当我 scrape 另一个信息时,JSON 包含旧信息 +新的那一个。一开始我设置了data = [],但没有工作。

app.post('/scraping', function(req, res) {

    (async () => {

        try {

            data = [];

            response = await requestPromise(req.body);
            $ = cheerio.load(response);
    
            $('div#all > img').each(function() {
                let img = $(this).attr('data-src');
                imgs.push({
                    imgURL: img
                });
            });

            data = JSON.stringify(imgs);
            fs.writeFileSync('chapter.json', data);
            res.redirect('/scraping');

        } catch (e) {
            console.error(e);
        }
    
    })();

});

【问题讨论】:

    标签: node.js web-scraping


    【解决方案1】:

    您的 data 变量似乎是一个全局变量,或者定义在范围之外的某个地方。这意味着所有调用之间的data“引用”是相同的。

    在你的函数中声明data,即let data = [];

    【讨论】:

      猜你喜欢
      • 2014-04-24
      • 2017-02-17
      • 1970-01-01
      • 2019-08-26
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2022-11-11
      相关资源
      最近更新 更多