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

如何在Node.js中读取HTML文件的body标签内指定内容

如何用Node.js仅读取HTML文件中body标签内的内容?

嘿,这问题我碰到过不少次,给你两种实用的解决方案,你可以根据HTML结构的复杂程度来选:

方法1:正则表达式快速解决(适合简单HTML)

如果你的HTML结构比较规整,没有太多复杂嵌套或者特殊格式,直接用正则匹配就能搞定,在你现有的代码里加几行就行:

const fs = require('fs');

fs.readFile('/test/index.html', 'utf8', function (err, data) {
  if (err) {
    return console.log(err);
  }
  // 匹配<body>标签及其属性,然后提取内部所有内容
  const bodyMatch = data.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
  if (bodyMatch && bodyMatch[1]) {
    console.log(bodyMatch[1]); // 这就是body标签里的所有内容啦
  } else {
    console.log('没找到body标签或者内容为空');
  }
});

这里的正则我解释下:

  • <body[^>]*>:匹配带有任意属性的<body>标签(比如<body class="main">这种)
  • ([\s\S]*?):非贪婪匹配所有内容,包括换行符,避免把后面的内容也匹配进来
  • <\/body>:闭合标签,i修饰符让匹配不区分大小写(比如<BODY>也能识别)

方法2:用cheerio解析HTML(推荐复杂场景)

如果你的HTML结构比较复杂,比如有嵌套标签、注释、或者不规范的格式,正则很容易出错,这时候用专门的HTML解析库cheerio就靠谱多了,它的语法和jQuery几乎一样,上手特别快:

  1. 先安装cheerio:
npm install cheerio
  1. 修改你的代码:
const fs = require('fs');
const cheerio = require('cheerio');

fs.readFile('/test/index.html', 'utf8', function (err, data) {
  if (err) {
    return console.log(err);
  }
  // 加载HTML内容
  const $ = cheerio.load(data);
  // 提取body标签内的所有内容
  const bodyContent = $('body').html();
  console.log(bodyContent);
});

这种方法不管HTML怎么变,只要是标准的结构,都能准确提取body里的内容,稳定性比正则高很多。

内容的提问来源于stack exchange,提问作者HARSHIT KUMAR SINGH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:52:25