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

Node.js中如何匹配对应div闭合标签并提取指定内容?

提取指定div标签内的内容(Node.js环境)

问题说明

现有HTML代码:

<div class="body">
 <h1>ddd</h1>
 <p>dadfsaf</p>
 <div id="name">
  <div class="des">psd</div>
  <div>www</div>
 </div>
 <div>ppp</div>
</div>

需要提取id="name"的div标签内部的内容,目标结果为:

<div class="des">psd</div>
<div>www</div>

尝试用正则表达式<div id="name">.*</div>无法实现需求,求可行解决方法。

为什么正则不行

正则天生不适合处理HTML这类嵌套结构的文档:

  • 默认情况下.不会匹配换行符,就算开启多行模式,也会匹配到第一个</div>就终止,没法识别嵌套标签的闭合关系。
  • HTML格式灵活(比如空格、换行、属性顺序变化),正则很难覆盖所有场景,后续维护成本极高。

推荐解决方案:用HTML解析库Cheerio

Node.js里最方便的方式是用Cheerio(轻量版jQuery核心)来解析操作HTML,步骤如下:

1. 安装Cheerio

npm install cheerio

2. 编写代码

const cheerio = require('cheerio');

const html = `
<div class="body">
 <h1>ddd</h1>
 <p>dadfsaf</p>
 <div id="name">
  <div class="des">psd</div>
  <div>www</div>
 </div>
 <div>ppp</div>
</div>
`;

// 加载HTML内容
const $ = cheerio.load(html);

// 提取目标div的内部内容并去除首尾空白
const targetContent = $('#name').html().trim();

console.log(targetContent);

运行结果

控制台输出就是你要的目标内容:

<div class="des">psd</div>
<div>www</div>

备选方案:用原生DOM解析(jsdom)

如果不想依赖第三方库,可以用Node.js的jsdom模块模拟浏览器DOM环境:

1. 安装jsdom

npm install jsdom

2. 编写代码

const { JSDOM } = require('jsdom');

const html = `
<div class="body">
 <h1>ddd</h1>
 <p>dadfsaf</p>
 <div id="name">
  <div class="des">psd</div>
  <div>www</div>
 </div>
 <div>ppp</div>
</div>
`;

// 创建DOM环境
const dom = new JSDOM(html);
const document = dom.window.document;

// 获取目标元素并提取内部内容
const nameDiv = document.getElementById('name');
const targetContent = nameDiv.innerHTML.trim();

console.log(targetContent);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:06:14