使用cheerio解析HTML表格,提取td内容转为结构化对象的实现方法
实现方案
调整说明
- 移除了原代码中不必要的
xmlMode配置,cheerio默认的HTML解析模式即可满足需求 - 调整选择器直接定位到表格所有行tr,逐行提取td内容后组装结构化对象
完整实现代码
const axios = require("axios").default; const cheerio = require("cheerio").default; axios.get("https://coronaboard.kr").then((res) => { const result = []; const $ = cheerio.load(res.data); // 遍历国家表格下的所有数据行 $("#country-table > div > div > table > tbody tr").each((index, tr) => { // 提取当前行所有td的文本内容并去除首尾空白 const tdTextList = $(tr).find('td').map((i, td) => $(td).text().trim()).get(); // 组装为结构化对象,可根据实际业务含义修改属性名 const countryData = { rank: tdTextList[0], countryName: tdTextList[1], confirmed: tdTextList[2], // 以下两个字段可根据页面实际展示的指标替换属性名 indicator1: tdTextList[3], indicator2: tdTextList[4] }; result.push(countryData); }); // 输出最终结构化结果 console.log(result); });
可选优化
如果需要将字段转为数值类型,可以增加转换逻辑:
- 普通数值直接用
parseInt或parseFloat转换,比如rank: parseInt(tdTextList[0]) - 带千位分隔符的数值先替换掉逗号再转换,比如
confirmed: parseInt(tdTextList[2].replace(/,/g, ''))
内容的提问来源于stack exchange,提问作者StackMinsung0809
相关产品推荐
相关产品推荐

