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

Node.js中用Cheerio解析HTML,提取p标签非strong内容的问题

解决Cheerio提取p标签中排除strong内容的问题

嘿,我来帮你搞定这个Cheerio解析的问题!首先得说下你现有代码里的几个小问题:$('ddstyle[name="p"]').attr('version')这行完全不对——没有ddstyle这个标签,而且p标签也没有version属性,你要的内容是藏在文本节点里的,不是属性哦。

下面给你两种靠谱的方法来提取你要的版本信息:

方法一:精准过滤文本节点(更鲁棒)

这种方法会直接定位到目标p标签,然后过滤掉里面的strong元素,只保留纯文本内容:

function parseFields ($) {
  const h2 = $('.faq_cat').attr('id');
  const info = $('meta[name="description"]').attr('content');
  
  // 1. 找到包含"Version:"的strong元素,再获取它的父节点p
  const versionP = $('dd p strong:contains("Version:")').parent();
  // 2. 过滤出p标签里的纯文本节点,拼接并去除多余空格
  const version = versionP.contents()
    .filter(function() {
      return this.type === 'text'; // 只保留文本节点
    })
    .text()
    .trim(); // 去掉前后的空白字符
  
  const fields = { h2, info, version };
  return fields; // 别忘了返回结果哦,你原来的代码没写这一步
}

方法二:文本替换(更简单,适合固定文本场景)

如果你确定strong标签里的文本就是固定的Version:,可以直接获取整个p标签的文本,然后替换掉不需要的部分:

function parseFields ($) {
  const h2 = $('.faq_cat').attr('id');
  const info = $('meta[name="description"]').attr('content');
  
  // 获取包含版本的p标签文本,替换掉"Version:"并去空格
  const version = $('dd p:contains("Version:")')
    .text()
    .replace('Version:', '')
    .trim();
  
  const fields = { h2, info, version };
  return fields;
}

两种方法都能帮你提取到0.4.0 (3612) for Android 4.3+ (Jelly Bean MR2, API 18)这个内容,你可以根据自己的场景选一个用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:09