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

如何使用Cheerio获取HTML元素的#text文本内容?

解决方法

针对你要提取div中夹在<b>和<a>之间的文本节点内容,以下是两种可行方案:

jQuery 实现

直接通过contents()获取所有子节点(包括文本节点),再筛选出目标文本节点:

const targetText = $('div')
  .contents()
  .filter(function() {
    // 筛选文本节点(nodeType 为3表示文本节点)
    return this.nodeType === 3;
  })
  .eq(1) // 对应第二个文本节点(第一个是<b>前的空白文本)
  .text()
  .trim(); // 去除前后多余空格

原生 JavaScript 实现

如果不用jQuery,原生JS同样可以精准定位:

const divElement = document.querySelector('div');
// 遍历所有子节点,筛选非空的文本节点
const validTextNodes = Array.from(divElement.childNodes).filter(node => {
  return node.nodeType === 3 && node.textContent.trim() !== '';
});
const targetText = validTextNodes[0].textContent.trim();

为什么之前的方法失效?

  • 移除<b>和<a>后用.text():如果操作后div的.text()返回undefined,大概率是选择器或DOM操作有误,且.text()会返回所有文本内容的拼接,无法单独提取中间段。
  • 遍历children:children只返回元素节点,不会包含文本节点,自然找不到目标内容;而contents()才会返回所有子节点(包括文本、注释等)。

内容的提问来源于stack exchange,提问作者RainWashed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:01:18