You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何将对象转为数组?适配objects-to-csv问题

解决objects-to-csv需要传入对象数组的问题

你遇到的问题很清晰:saveDataToCsv最后接收的result只是循环最后一次返回的单个对象,而objects-to-csv库要求传入对象数组,这就是命令提示符报错的原因。

修改步骤:

  1. 先初始化一个空数组,用来存储所有爬取到的结果,避免每次循环覆盖单个变量
  2. 循环过程中,把每次爬取到的对象push进这个数组
  3. 最后将完整的数组传入saveDataToCsv函数

修改后的完整代码如下:

const ObjectsToCsv = require("objects-to-csv");
async function scrapeDescription(url, page) {
 //more code ...
 return {url, cats, main_img, name, descript, price};
}
async function saveDataToCsv(data) {
 const csv = new ObjectsToCsv(data);
 await csv.toDisk("spreadsheets/output.csv");
}

browser = await puppeteer.launch({ headless: false});
const descriptionPage = await browser.newPage();
// 初始化空数组存储所有爬取结果
const resultsArray = [];
for (var i=0; i< 2; i++){
 const result = await scrapeDescription(scrapeResults[i], descriptionPage);
 console.log(result);
 // 将单条结果加入数组
 resultsArray.push(result);
}
// 传入对象数组而非单个对象
await saveDataToCsv(resultsArray);

为什么这样修改有效?

  • 原来的代码中,result变量在每次循环迭代时都会被新对象覆盖,循环结束后它只保留了最后一次爬取的数据
  • objects-to-csv的构造函数需要接收对象数组,这样才能把数组里的每个对象映射为CSV文件的一行数据

这样调整后,所有爬取到的商品数据都会被收集到数组中,再传给CSV库就能正确生成包含全部内容的CSV文件了。

内容的提问来源于stack exchange,提问作者Maureen Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:52:29