如何使用Jsoup仅保留干净的<p>标签并删除其余内容?
解决方案:精准保留干净的
标签
这问题我之前也碰到过,核心就是要筛选出既没有额外class属性,内部也不包含元素的
标签,把不符合条件的移除就行。下面给你两种常用的实现方式:
原生JavaScript方案
这种方式不需要依赖任何库,直接操作DOM即可:
// 获取页面中所有的<p>元素 const allParagraphs = document.querySelectorAll('p'); // 遍历每个<p>进行检查 allParagraphs.forEach(paragraph => { // 判断条件:有class属性 或者 内部包含<strong>元素 const hasClass = paragraph.classList.length > 0; const hasStrong = paragraph.querySelector('strong') !== null; if (hasClass || hasStrong) { paragraph.remove(); // 移除不符合要求的<p> } });
这段代码会逐个检查每个
:只要它带有class(不管是example还是其他),或者里面嵌套了,就直接从DOM中移除,剩下的就是你要的干净
标签。
jQuery方案(如果你的项目已经引入了jQuery)
如果习惯用jQuery,代码会更简洁:
// 一次性移除所有带class的<p>,以及包含<strong>的<p> $('p[class], p:has(strong)').remove();
这里用了jQuery的属性选择器[class]匹配带class的
,:has(strong)匹配内部包含的
,然后批量移除。
如果你的“干净
”还要求内部只有纯文本(没有任何其他子元素),可以在条件里再加一层判断,比如原生JS里检查paragraph.children.length === 0,确保
里没有任何子节点,只有文本内容。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

