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,提问作者Нек Траммм
相关产品推荐
相关产品推荐

