ToolPal
深色代码编辑器屏幕上的 HTML 代码行

HTML 转纯文本:快速去除标签,提取干净内容

📷 Florian Olivo / Pexels

HTML 转纯文本:快速去除标签,提取干净内容

学习如何去除 HTML 标签、提取纯文本内容、解码 HTML 实体、保留换行结构,以及了解 HTML 转文本与 HTML 转 Markdown 的区别。

2026年4月12日3分钟阅读

从网页上复制文字然后粘贴出一堆 <p> 标签和 &nbsp; 字符——这种体验相信很多开发者都经历过。或者用文本编辑器打开一封 HTML 邮件模板,想引用里面一段话,却看到每个词都被 <td><span style="color:#333333"> 包裹着。

这就是 HTML 转文本工具要解决的问题。听起来很简单——去掉标签,留下文字——但实际上涉及实体解码、换行处理、空白字符规范化等细节,单靠一个正则替换是搞不定的。本文深入讲解它的工作原理、适用场景,以及哪些地方确实做不好。

HTML 转文本实际上做了什么

从表面看,把 HTML 转成文本就是删掉所有 < > 括号里的内容。但这只是第一步。

标签去除是最显而易见的部分。每个元素——<div><p><span><a><img>,全部去掉,留下标签之间的内容。

实体解码是很多简单实现翻车的地方。HTML 用实体来表示那些在标记语言中具有特殊含义的字符。& 在 HTML 里要写成 &amp;< 要写成 &lt;,不换行空格写成 &nbsp;,弯引号常常是 &#8220;&#8221;。如果只去掉标签而不解码实体,那所谓的「纯文本」里会到处是这些裸露的编码字符,完全不可读。

一个合格的转换器会处理所有命名实体(&amp;&lt;&gt;&quot;&nbsp; 等,以及 &mdash;&copy;&reg; 这样的扩展实体),以及十进制(&#160;)和十六进制(&#xA0;)形式的数字实体。

换行保留是第三个关键点。HTML 的空白规则与纯文本不同——源代码里的多个空格会折叠成一个,换行本身在视觉上也没有意义。浏览器里看到的段落结构来自块级元素:<p><div><h1><h6><li><blockquote><br><hr> 等。一个用心设计的转换器会在遇到这些元素时插入换行或空行,让输出有一定的段落感,而不是所有内容挤在一行里。

打开 /tools/html-to-text,粘贴你的 HTML,工具会自动处理这三件事。

真实使用场景

我来列举一下实际工作中会用到这类工具的情况,比你想象的要多。

整理 HTML 邮件内容

现代营销邮件模板的 HTML 往往非常冗长。当同事转发来一封邮件让你引用其中一段内容,而你拿到的只是原始的 .eml 文件或者从 Outlook 粘贴出来的乱码时,你会看到这样的东西:

<td class="mcnTextContent" style="padding-top:0;padding-right:18px;padding-bottom:9px;padding-left:18px;">
  <p>我们很高兴宣布 Q2 产品路线图&hellip;</p>
</td>

粘贴到转换器里,得到的是:

我们很高兴宣布 Q2 产品路线图…

这才是你真正需要的那部分。

制作纯文本版邮件

发送 HTML 邮件营销时,应该同时附上纯文本备用版本——这能提升送达率,也能服务那些邮件客户端不渲染 HTML 的收件人。从设计好的模板手动写纯文本版既繁琐又容易出错。把 HTML 丢进转换器,得到一个可用的草稿,再手动清理多余的导航链接、调整换行,就省事多了。

输出不会完美——导航菜单和图片密集的头部往往会产生奇怪的结果——但比从空白文件开始要好得多。

网页内容抓取

抓取网页时,你通常会拿到包含导航、侧边栏、广告、脚注和脚本的完整 HTML。定位到主内容容器之后(用 BeautifulSoup 或 cheerio 等库),往往还是 HTML 格式。通过转换器就能得到可读的文字。

对于临时性的单次任务——抓取商品描述、提取博客文章正文、复制一个食谱——直接粘贴 HTML 到工具里确实比写解析脚本快得多。如果是系统性的批量任务,还是用服务端工具更好,但临时处理用这个很顺手。

数据库或搜索索引准备

如果内容以 HTML 形式存储(比如 CMS 后台或富文本编辑器字段),但你需要纯文本来做全文搜索索引、AI 模型输入或在不支持渲染的场景下显示,就需要干净的文本提取。转换成纯文本可以得到一个安全的版本用于索引、比较或传递给下游系统。

粘贴到纯文本环境

Google Docs、Notion、纯文本编辑器、短信模板、终端输出——很多地方接受文字但不接受 HTML。从浏览器复制文字时往往会带上隐藏的 HTML 格式。先转换再粘贴就能避免这个问题。

HTML 实体是什么,为什么重要

这个知识点值得单独说说,因为确实容易踩坑。

HTML 规范定义了一组命名字符引用——像 &amp;&lt;&gt;&quot; 这样的字符串——用来表示特殊字符。它们存在的原因是 HTML 本身用 <>& 作为语法字符。如果你想在浏览器里显示一个字面的 <,必须在 HTML 里写 &lt;,否则浏览器会以为你在开始一个新标签。

只去掉标签而不解码实体时,会得到这样的结果:

输入 HTML:
<p>价格是 $10 &amp; 免运费。查看 &lt;详情&gt; 页面。</p>

只去掉标签后:
价格是 $10 &amp; 免运费。查看 &lt;详情&gt; 页面。

去掉标签 + 解码实体后:
价格是 $10 & 免运费。查看 <详情> 页面。

第二个版本才是用户在浏览器里实际看到的内容,也是你需要的结果。

常见实体一览:

  • &amp;&
  • &lt;<
  • &gt;>
  • &nbsp; → 不换行空格(输出中通常显示为普通空格)
  • &mdash;(破折号)
  • &hellip;(省略号)
  • &copy;©
  • &#8220;&#8221; → 左右弯引号

好的转换器会透明地处理所有这些。

HTML 转文本 vs HTML 转 Markdown

两者都是把 HTML 转成另一种格式,但用途不同。

用 HTML 转文本的情况:

  • 需要真正无格式的纯内容
  • 输出要传给不支持 Markdown 的系统
  • 制作纯文本邮件版本
  • 做文本分析或自然语言处理,标记只是噪音
  • 需要对用户生成的 HTML 做无害化处理以便安全存储或比较

HTML 转 Markdown 的情况:

  • 需要保留文档结构(标题、加粗、斜体、链接、列表)
  • 把内容从 HTML CMS 迁移到基于 Markdown 的系统
  • 打算在支持 Markdown 的地方重新渲染内容
  • 希望输出结果还能被人类舒适地编辑

核心区别:HTML 转文本会丢失所有格式结构;HTML 转 Markdown 以人类可读、可编辑的形式保留结构。如果要把博客从 WordPress 迁移到 Astro 或 Hugo,用 Markdown 转换;如果是给搜索引擎或语言模型提取文本,纯文本通常更干净。

换行行为和预期结果

HTML 转文本中最棘手的部分之一就是空白处理。

在 HTML 里,源代码中的换行被当作空格,多个空格折叠成一个。浏览器里看到的视觉换行完全来自块级元素和 CSS。去掉标签后,需要决定每个元素边界该怎么处理。

合理的规则集:

  • <br> → 单个换行
  • <p><div><h1><h6> → 双换行(前后各一个空行)
  • <li> → 换行加项目符号或序号前缀
  • <hr> → 一行横线或仅一个空行
  • 行内元素(<span><a><strong><em>)→ 直接输出文字,不加额外空格

HTML 转文本工具 应用这类规则,使输出可读且有合理结构,而不是一条超长的单行。对于复杂布局(表格、多列 div),效果可能不完美——下面会讲到局限性。

局限性:这个工具做不好的地方

我想诚实地说明 HTML 转文本转换的能力边界。

图片会完全消失。 纯文本没有图片的对应形式,<img> 标签连同 srcalt 等所有属性一起被删掉。如果图片承载了重要信息——图表、示意图、Logo——那些信息就丢失了。如果需要保留 alt 文字,考虑转换为 Markdown(那里图片变成 ![替代文字](url))。

复杂的表格布局会变乱。 用于排版的 HTML 表格——那种老派的邮件模板——转换后往往难以阅读。单元格内容会按阅读顺序拼接,未必符合人的预期。简单的数据表格还好,复杂的布局表格就会一团糟。

CSS 隐藏的内容仍然会出现。 display: nonevisibility: hidden 的元素在 HTML 源代码中仍然存在,所以它们的文字内容也会出现在纯文本输出里。如果页面有隐藏的移动端菜单、隐藏的重复标题或隐藏的提示文字,这些都会出现。没有运行完整浏览器渲染管道就无法根据 CSS 状态过滤内容。

JavaScript 渲染的内容不会出现。 如果你粘贴的是一个通过 JavaScript 动态加载内容的页面的原始 HTML 源代码,转换器只能看到静态 HTML 里的内容——而那可能非常少。对于 JS 渲染的页面,需要先用无头浏览器获取渲染后的输出。

没有语义理解能力。 转换器不知道 <nav> 是你可能想跳过的导航,也不知道 <aside> 是你可能不需要的侧边栏。它对所有元素一视同仁。你可能需要在转换前预处理 HTML——移除 <nav><footer><aside><script><style> 块——以获得更干净的输出。

对于网页抓取,生产环境建议用 BeautifulSoup(Python)或 cheerio(Node.js),它们可以用选择器定位特定元素后再提取文本。HTML 转文本工具 最适合快速的一次性转换。

相关工具

HTML 转文本转换器与几个其他工具配合使用效果很好:

  • HTML 编码器:实体解码的反向操作——把特殊字符编码回 HTML 实体。在 HTML 中安全嵌入文本时很有用。
  • HTML 转 Markdown:当你需要保留结构而不是去除它时。更适合内容迁移。
  • HTML 压缩器:当你想保留 HTML 但通过删除空白、注释和冗余属性来减小文件体积时。目标不同——不是提取内容,而是压缩标记。

一个快速工作流示例

来走一遍实际场景:你抓取了一个商品详情页,拿到了 <main> 元素的原始 HTML,想把纯文本放到对比电子表格里。

  1. 从抓取工具或浏览器开发者工具中复制 HTML。
  2. 粘贴到 /tools/html-to-text
  3. 输出会显示去掉标签、解码实体、块级元素转换为换行后的结果。
  4. 把结果复制到你的表格里。

总时间:大约 15 秒。用浏览器控制台里的正则表达式做这件事会更慢,而且几乎肯定会把实体搞坏。

总结

HTML 转文本看似简单,真正动手才会发现涉及好几层需要正确处理的细节。标签去除是显而易见的部分,实体解码和空白规范化才是让人踩坑的地方。

HTML 转文本工具 一步解决所有问题。对于快速的一次性提取——无论是邮件、抓取的页面、CMS 导出还是任何有 HTML 数据的地方——它是从标记到纯文本最快的路径。

如果你需要保留格式而不是去除它,可以看看 HTML 转 Markdown。如果直接处理 HTML 实体,HTML 编码器HTML 压缩器 可以作为工具组合的补充。

常见问题

分享文章

XLinkedIn

相关文章