node/puppeteer/cheerio爬虫中用each函数处理表格生成对象数组的问题
你可以按照以下逻辑修改代码:每8个td为一组对应一条结构化数据,提前定义好A~H的字段映射,遍历过程中分组拼接对象即可,修改后代码如下:
// 定义字段映射,按顺序对应每组8个td的key const keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] // 存储最终结果的数组 const result = [] // 存储当前正在拼接的单条数据 let currentItem = {} $('table[class="ad_tab"]') .find("tbody > tr > td") .each(function (index, element) { // 计算当前td在本组内的下标 const groupIndex = index % 8 // 赋值对应字段,trim()可以去除文本前后多余的空白符 currentItem[keys[groupIndex]] = $(element).text().trim() // 到达本组最后一个元素,完成本条数据拼接 if (groupIndex === 7) { result.push(currentItem) // 重置临时对象,准备下一组数据 currentItem = {} } }) // 格式化输出结构化结果,第二个参数为replacer传null即可,第三个参数为缩进空格数 console.log(JSON.stringify(result, null, 2))
运行上述代码后,控制台就会直接输出你期望的JSON结构。如果后续需要把结果持久化存储为本地JSON文件,直接用Node.js的fs模块写入result数组即可。
内容的提问来源于stack exchange,提问作者AHCB
相关产品推荐
相关产品推荐

