去除 HTML 标签(提取纯文本)
把源码里的 <div>、<a>、<style> 等标签去掉,只留下文字。&、你 这类实体会还原成符号,块级标签与 <br> 会变成换行。适合从后台编辑器、邮件源码、抓取结果里取正文;也可以在「处理方式」里选择保留脚本样式文本、保留实体原文或按原样保留空行。
把网页源码里的标签去掉、只留文字,是处理抓取结果、后台编辑器导出内容与邮件源码时的常规动作。这个工具会移除标签、把实体符号还原(如 & 还原成 &、你 还原成汉字),并把块级标签与换行标签转成换行,尽量保住原有段落结构。
两点预期需要说明:script 与 style 会连内容一起丢弃 —— 它们不属于正文,留着只会变成噪声;另外这个工具只做「提取」不做「净化」,输出的是纯文本而非可直接渲染的 HTML,因此不能用它来防 XSS(要防注入应使用白名单净化库)。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 把 HTML 源码粘进输入框,结果区立即给出纯文本。
- 看下方统计:移除了多少标签、解码了多少实体、丢弃了几个脚本样式块。
- 换行被合并得厉害时,在处理方式里选择保留空行的选项再试一次。
- 结果里若残留尖括号,通常是源码本身有未闭合或不规范的标签,需回源检查。
计算原理与示例
基本用法
把 HTML 源码粘进输入框,结果区立即给出纯文本,下方的统计会告诉你移除了多少个标签、解码了多少个实体、丢弃了几个脚本样式块。复制按钮拿到的是可直接使用的文本。
四种处理方式怎么选
默认的「标准」方式适合读正文:脚本与样式连内容一起丢掉,块级标签和 <br> 转成换行,实体解码成符号,多余空白折叠。要保留前端代码片段时选「保留脚本与样式文本」;想先看清原文里的实体写法(例如排查 到底在哪)选「保留实体原文」;格式化后的 HTML 每行都被包了一层标签、希望保留原有空行节奏时选「不折叠空格与空行」。
它不是 XSS 过滤器
标签是用正则剥离的,对合法 HTML 效果好、速度快,但它不做语法解析、也不判断标签是否安全。要把它当作「取文字」的工具,不能当作防注入手段——用户提交的内容必须由服务端做转义与白名单过滤,而不是靠前端去掉尖括号。
口径:正则剥离标签(<!-- 注释 --> 与 <script>/<style> 默认连内容一起移除);块级标签与 <br> 按「换行」处理,其余标签直接删除;关闭折叠时按原样保留空白与空行;实体解码覆盖十/十六进制数字实体与常见命名实体,未知实体原样保留。不做 HTML 语法解析,也不做安全过滤。
代码示例
JavaScript 浏览器里提取纯文本(更可靠)
// 交给浏览器解析,比正则可靠得多
// (正则处理不了嵌套标签与属性值里的尖括号)
const toText = (html) => {
const doc = new DOMParser().parseFromString(html, 'text/html');
doc.querySelectorAll('script, style').forEach((el) => el.remove());
return doc.body.innerText || doc.body.textContent || '';
};
// 若要把它渲染回页面,仍需白名单净化
// toText('<p>正文 & 符号</p>') → '正文 & 符号'
Shell 命令行提取(先剔除脚本样式块)
# 先删 script/style 整块,再剥标签(顺序不能反)
sed -e '/<script/,/<\/script>/d' -e '/<style/,/<\/style>/d' page.html \
| sed -e 's/<[^>]*>//g' \
| grep -v '^[[:space:]]*$' > text.txt
# 用 lynx / w3m 更省事(保留换行与列表结构)
lynx -dump -nolist page.html > text.txt
常见问题
为什么脚本和样式的内容消失了?
这是默认行为,也是「取正文」的正确取向:<script> 里是 JS 代码、<style> 里是 CSS 规则,都不是给人读的文字,混进结果会让正文没法用。如果你想分析这些代码,把处理方式改成「保留脚本与样式文本」即可,统计里的「丢弃脚本样式块」会归零。
& 这类符号能一起处理吗?
能,默认就会还原:& → &、< → <、 → 不换行空格、你 → 你、你 → 你(十进制与十六进制都支持),常见命名实体也都覆盖。若想保留原样写法,把处理方式切成「保留实体原文」即可。
这个工具能防止 XSS 攻击吗?
不能,也不该这么用。它只是把标签当字符串删掉,绕过方式(如畸形嵌套、属性里藏代码、编码变体)它一概不管。防御 XSS 必须由服务端在输出时按上下文转义,或使用成熟的白名单过滤器;把「前端去标签」当成安全措施是常见误区。
表格里的内容会变成什么样?
会按单元格文本顺序拼接,每个 </tr> 与 </td> 附近的换行会让不同行分开,但列与列之间的对齐关系会丢失——纯文本里没有表格结构。如果表格数据还要用,建议直接复制到表格处理工具里(或用 CSV 转换工具),别指望从纯文本还原列。
结果里为什么还残留了尖括号或半截标签?
因为剥离是按正则做的,对格式不规范的源码(标签没闭合、属性里带未转义的 >、模板语法混排)可能漏掉一小段。另外正文里本来就写着 <div> 这类转义内容,解码后会出现 <div> 字样——那是正文,不是残留标签,可用「保留实体原文」区分。
换行全没了怎么恢复?
两种情况:一是源码本身用 <div> 分行、而处理方式选了不含换行的预设;二是转换结果被粘贴到单行输入框里。回到「标准」方式会把块级标签与 <br> 转成换行;若源码本身没有换行语义,任何工具都无从恢复,只能手工整理。
处理结果能直接粘回网页或邮件吗?
能,但要清楚它已经是纯文本:原来的粗体、链接、列表结构都不会保留,粘进富文本编辑器里也只是一段普通文字。要保留结构就别用这个工具,直接在编辑器里做「粘贴为纯文本」或使用对应的转换工具。
这个页面会把我的源码上传吗?
不会。处理在浏览器内完成,输入不经过服务器,也不写入 localStorage——邮件源码、后台页面片段这类内容可以放心粘贴。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。