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

使用Puppeteer爬取网页时无法将表格数据写入JSON文件

问题分析与解决方案

你的代码中fs.writeFile无法正常写入JSON文件,核心有两个问题:

1. 未将数据序列化为JSON字符串

fs.writeFile要求写入的内容是字符串类型,但你直接传递了对象数组data,此时Node.js会将对象转换为默认的[object Object]字符串,而非预期的JSON格式。

2. 未等待异步写入完成就关闭浏览器

fs.writeFile是异步操作,你没有等待它完成就调用了await browser.close(),可能导致写入操作还没结束,程序就已经退出,文件写入不完整或失败。


修改后的关键代码片段

将原来的fs.writeFile('data.json', data);替换为以下代码:

console.log(JSON.stringify(data));
try {
    // 序列化数据为格式化后的JSON字符串,并等待写入完成
    await fs.promises.writeFile('data.json', JSON.stringify(data, null, 2));
    console.log('数据已成功写入data.json');
} catch (err) {
    console.error('写入文件失败:', err);
}
await browser.close();

修改说明

  • 使用fs.promises.writeFile:这是fs.writeFile的Promise版本,配合await可以确保写入操作完成后再执行后续代码,避免异步操作未完成就退出。
  • JSON.stringify(data, null, 2):和你console.log中使用的逻辑一致,将对象序列化为JSON字符串,null和2用于格式化输出,让JSON文件更易读。
  • 错误捕获:添加try/catch块可以捕获写入过程中的异常(比如权限不足、磁盘空间不足等),方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:35:27