去除HTML标签提取纯文本:从网页复制干净文字的实用方法
从网页源码、富文本编辑器、邮件模板里去掉HTML标签,只留纯文本。块级标签转换行保住段落,HTML实体还原成正常字符,script代码整块删掉,适合导入数据库和做字数统计。
去除HTML标签,提取纯文本:把网页内容洗成干净文字
从网页上复制一段文字,粘到记事本或数据库里,经常会带出一堆看不懂的东西:<p>、<span class="...">、 、&。这些是 HTML 的写法,不是正文。把它们清掉,只留下人能直接读的文字,就是去除 HTML 标签这件事要解决的问题。
为什么纯文本这么重要
带标签的内容看着是文字,实际上夹了大量标记。这些标记在三个场景里会直接坏事。
一是从网页复制干净文字。论坛、公众号、在线文档里的内容往往套了好几层标签,直接复制到聊天框或代码注释里,排版会乱,实体字符会原样显示出来。
二是导入数据库。一个字段里如果混着 <div> 和内联样式,全文检索会把标签名也当成内容索引,查询结果就不准。存进去之前先剥成纯文本,字段才干净。
三是字数统计。带标签去数字数,<p>、class 名都会被算进去,数出来的数字虚高。先去格式再统计,中文按字、英文按词才准。
去掉标签,但要保住正文内容
去标签不是简单地把尖括号里的东西删光那么粗暴。一个容易踩的坑是 script 和 style 标签:普通的处理只删掉 <script> 和 </script> 这对标签,中间那段 JavaScript 反而漏进了正文,变成一长串乱码。正确的做法是先把 script 和 style 这两块连标签带内容整个切掉,再去剩下的标签,正文里就不会冒出 function() {...} 或一大堆 CSS。
段落结构也要保住。p、div、li、h1 到 h6、br、tr 这些标签表示一段或一行的结束,把它们换成换行符,输出读起来就跟原网页的分段一致,而不是被压成一坨连在一起的长句。
HTML 实体也要还原
从网页里抠出来的文字常带转义写法:&、 、'。这些叫 HTML 实体,是为了在 HTML 里安全地表示特殊字符,本身不是正文的一部分。不还原的话,粘到别处会被当成普通字符显示出来,读者看到的就是 & 而不是 &。
还原规则很直接:& 变回 &,< 变回 <,> 变回 >," 变回双引号,' 变回单引号, 变回空格。数字实体如 A 和十六进制 A 也都能转成对应字符。
一个真实的例子
假设你从网页源码里复制了这么一段:
<h1>商品价格</h1><p>原价 <b>¥199</b>,现价 <b>¥99</b> 包邮</p>
开着块级标签转换行和解码实体,输出就是:
商品价格
原价 ¥199,现价 ¥99 包邮
标题单独一行,正文一行,<b> 标签去掉了但里面的价格留着,¥ 还原成了货币符号, 变回了正常空格。这就是「去掉标签、保留内容」该有的样子。
我自己的用法
我平时写脚本抓页面,抓回来的 HTML 满是 div、内联样式,还夹着统计代码。以前我用正则一点点清,经常漏掉 script 块,清出来的语料里混着 JavaScript,喂给模型当训练数据还得返工。后来固定先把整段粘进 strip-html-tags,块级标签转换行开着,script 内容自动删掉,出来就是带段落的干净正文,省了写一堆正则的功夫。需要保留 b、a 这种标签时,填进白名单就行,其余照样去掉。
什么时候不该用它
如果你想保留格式继续编辑,比如把网页搬进笔记或博客,那要的不是纯文本,而是结构。这种情况下 html-to-markdown 更合适:它把 <b> 转成 **、<a> 转成 [文字](链接),格式留着,搬进 Markdown 编辑器还能接着改。
反过来,如果你需要把纯文本编码成 HTML 实体安全地放进网页,可以用 html-entities-encoder 做相反的事。去完标签想批量替换某些词,接 find-and-replace-text;只想数数有多少字,去 word-counter。
去标签看着是个小操作,但 script 漏出、实体没还原、段落被压平这几个细节决定了结果能不能直接用。处理对了,你拿到的就是一段干净、可读、可入库的纯文字。
Made by Toolora · Updated 2026-06-13