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

Node.js中使用Cheerio解析HTML数据的问题求助

解决Cheerio解析HTML表格生成指定数组格式的问题

嘿,我看到你在Cheerio解析HTML表格时遇到了格式问题——当前代码把版本号、链接和日期拆成了三个独立数组,而不是你想要的单个数组包含完整对象的格式。别担心,我来帮你修正这个问题!

问题根源

你的现有代码在遍历每一行<tr>时,分别将version、href、data推入三个不同的数组,这样就无法保证三个字段对应同一个版本条目。我们需要调整逻辑,在每一行循环内直接组装完整的对象,再推入结果数组。

修正后的解析代码

const cheerio = require('cheerio');
// 假设你已经加载了待解析的HTML内容到html变量中
const $ = cheerio.load(html);

const result = [];

// 遍历表格的每一行
$('.row table.striped tbody tr').each(function() {
  const $currentRow = $(this);
  // 获取当前行的下载链接元素
  const $downloadLink = $currentRow.find("td a[title^='download']");
  
  // 提取当前行的三个字段
  const versionText = $downloadLink.text();
  const downloadHref = $downloadLink.attr('href');
  const releaseDate = $currentRow.find('td').eq(1).text();
  
  // 组装成目标格式的对象并推入结果数组
  result.push({
    version: versionText,
    href: downloadHref,
    data: releaseDate
  });
});

// 输出结果
console.log(result);

代码说明

  1. 统一结果数组:创建一个空数组result来存储最终的完整对象,而不是拆分三个数组。
  2. 精准元素查找:在每一行内先定位到下载链接<a>标签,同时提取它的文本(版本号)和href属性,避免重复查找DOM元素,提升效率。
  3. 组装对象:将当前行的三个字段组装成一个包含version、href、data的对象,直接推入结果数组,确保每个对象对应一个版本的完整信息。

输出效果

运行修正后的代码,你会得到完全符合期望的数组格式:

[ 
  { version: '1.3', href: '/download-app/com.girlsbeautysalon.android_summerhairsalon/4_com.girlsbeautysalon.android_summerhairsalon_2016-12-26.apk/', data: 'Dec. 26, 2016'}, 
  { version: ' 1.3 ', href: '/download-app/com.girlsbeautysalon.android_summerhairsalon/2_com.girlsbeautysalon.android_summerhairsalon_2016-12-25.apk/', data: 'Dec. 25, 2016'}, 
  { version: ' 1.2 ', href: '/download-app/com.girlsbeautysalon.android_summerhairsalon/3_com.girlsbeautysalon.android_summerhairsalon_2016-08-26.apk/', data: 'Aug. 26, 2016'} 
]

内容的提问来源于stack exchange,提问作者Нек Траммм

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:08