最可靠方式是用 document.body.textContent 提取可见文本,它自动跳过 script/style/注释/不可见元素;本地文件需先用浏览器打开再全选复制,或用 Python+BeautifulSoup 批量处理。

直接保存网页 HTML 源码中的文字内容(即去除所有标签、只留可读文本),关键不是“保存源码”,而是“提取渲染后可见的纯文本”。源码里混着 <script>、<style>、注释、属性值等非内容信息,盲目删标签会出错。
用 document.body.textContent 提取最干净的可见文本
这是现代浏览器中提取页面文字内容最可靠的方式,它自动跳过 <script>、<style>、注释和不可见元素(如 display: none),只返回用户实际能选中的文字。
操作步骤:
- 在目标网页按
F12打开开发者工具,切到Console标签页 - 输入并回车执行:
document.body.textContent - 右键输出结果 →
Copy string(不是Copy,避免复制多余换行) - 粘贴到记事本,保存为
.txt,编码选UTF-8
注意:textContent 会保留 visibility: hidden 元素里的文字,如果页面用了这类隐藏方式且你不想保留,得手动删;而 innerText 虽然只取“视觉上可见”的文本,但受 CSS 渲染影响,可能在某些旧浏览器或动态加载场景下返回空或不全。
立即学习“前端免费学习笔记(深入)”;
处理本地 .html 或 .htm 文件时别用右键“查看源代码”
右键 → “查看页面源代码”看到的是原始 HTML 字符串,里面包含大量非文本内容(如 <meta>、<link>、JS 代码块),直接复制粘贴会导致乱码或残留标签。
正确做法是:
- 双击打开该文件(用浏览器渲染后加载)
- 按
Ctrl + A全选 →Ctrl + C复制(此时浏览器已过滤掉不可见节点) - 粘贴进记事本,再保存为
.txt
这个方法对单个文件最快,但若遇到禁用右键/选中的网页,就失效——此时必须退回 document.body.textContent 方式,它绕过前端限制,直接从 DOM 树读取。
批量处理多个本地 HTML 文件:Python + BeautifulSoup 最稳
手动操作几十个文件极易漏、命名错、编码乱。用脚本可一次读取、解析、提取、保存,且能统一处理编码和空白。
示例代码(需先 pip install beautifulsoup4):
from bs4 import BeautifulSoup import os <p>for html_file in ["page1.html", "page2.htm"]: with open(html_file, "r", encoding="utf-8") as f: soup = BeautifulSoup(f, "html.parser") text = soup.get_text() # 自动清理 script/style/注释,保留段落逻辑 txt_file = os.path.splitext(html_file)[0] + ".txt" with open(txt_file, "w", encoding="utf-8") as f: f.write(text.strip())
soup.get_text() 比正则删标签靠谱得多:它理解 HTML 结构,能智能合并相邻文本节点、处理换行缩进、跳过 <script> 内容;而用 re.sub(r"<[^>]*>", "", html_str) 容易误删属性里的尖括号或破坏实体编码(如 )。
千万别用记事本直接删 <...> 标签
有人试图在记事本里用查找替换删掉所有 <...>,这在真实 HTML 中几乎必然失败:
-
<img src="a<b.jpg">这类属性含<,正则会提前截断 -
<!-- 注释 -->和<script>alert("<div>");</script>里的<不该被删 - HTML 实体如
©会被当普通字符留下,显示为乱码
真正要保存“纯文本代码”,意思是“把 HTML 当作数据源,只导出其中人类可读的文字部分”,不是“把 HTML 字符串当纯文本原样存下来”。后者只需另存为 .txt,前者必须经过语义化提取——这点容易混淆,也是出错最多的地方。



















