Node JS手表价格爬虫JSON输出混乱,如何调整为结构化对象格式?
代码修改方案
核心修改点
- 废弃交替填充一维数组的逻辑,直接对应同索引的标题和价格组装为对象
- 使用
trim()方法去除字符串首尾的换行、空白字符 - 用正则替换价格中的欧元符号、多余无效字符
- 调用
JSON.stringify时传入格式化参数,输出缩进后的易读JSON
import axios from 'axios' import cheerio from 'cheerio' import * as fs from 'fs' // 存储最终结果的对象数组 const result = []; axios.get("URL").then((response) => { const $ = cheerio.load(response.data); // 分别获取所有标题和价格元素集合 const titles = $(".article-title"); const prices = $(".article-price"); // 按索引配对组装结构化对象 titles.each((index, element) => { // 清理标题:去除首尾空白、换行 const cleanTitle = $(element).text().trim(); // 清理价格:去除首尾空白、过滤非数字和千分位空格的字符(适配欧元符号、其他货币标识清理) const rawPrice = $(prices[index]).text().trim(); const cleanPrice = rawPrice.replace(/[^0-9\s]/g, '').trim(); result.push({ title: cleanTitle, price: cleanPrice }) }) // 第三个参数为2代表输出时缩进2空格,匹配你需要的格式化JSON格式 const data = JSON.stringify(result, null, 2); fs.writeFileSync('sub.json', data); });
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

