Python 将 HTML 转换为纯文本 TXT (HTML 文本提取)

1. 引言

在数据处理、内容提取、网页归档等任务中,经常需要将 HTML 转换为纯文本 TXT。常见需求包括去除 HTML 标签,保留文本内容,保留段落、列表等基本结构。

本文将介绍如何用 Python 和 Free Spire.Doc 库完成 HTML 到 TXT 的转换。


2. 转换原理

HTML 转 TXT 的本质是解析 HTML 文档对象模型(DOM) ,提取其中的文本节点,再按需要的格式输出。

常用方法有两类:

  1. 纯解析器 (如 BeautifulSoup、lxml):快速、轻量,但需要自己处理换行和缩进。
  2. 文档模型类库(如 Free Spire.Doc):加载 HTML 到文档对象,再导出为 TXT,结构保留更好。

3. 环境准备

安装 Free Spire.Doc for Python:

bash 复制代码
pip install Spire.Doc.free

注意点击查看免费版的限制


4. 基本实现

4.1 HTML 文件 → TXT 文件

下面是一个将 HTML 文件转换为 TXT 文本的简单示例:

python 复制代码
from spire.doc import *
from spire.doc.common import *

# 加载HTML文件
document = Document()
document.LoadFromFile("E:\input.html", FileFormat.Html, XHTMLValidationType.none)

# 另存为TXT文件
document.SaveToFile("Html文件转TXT.txt", FileFormat.Txt)
document.Close()

核心代码:

  • LoadFromFile() :加载 HTML 文件。FileFormat.Html 表示文件格式为 HTML。
  • SaveToFile() :将文档保存为 TXT 格式。FileFormat.Txt 表示保存为纯文本。

输出结果:

4.2 HTML 字符串 → TXT 文件

若 HTML 内容已在内存中(如接口返回、爬虫抓取结果),可使用该方法:

python 复制代码
from spire.doc import *
from spire.doc.common import *

# 指定HTML字符串
sample_html = """
<html>
<head><title>示例页面</title></head>
<body>
    <h1>欢迎来到我的网站</h1>
    <p>这是一个段落文本。</p>
    <ul>
        <li>项目1</li>
        <li>项目2</li>
        <li>项目3</li>
    </ul>
</body>
</html>
"""

# 创建文档
document = Document()
# 在段落中插入字符串
section = document.AddSection()
section.AddParagraph().AppendHTML(sample_html)

# 另存为TXT
document.SaveToFile("Html字符串转TXT.txt", FileFormat.Txt)
document.Close()

输出结果:


5. 注意事项

  • 格式保留:转换后的 TXT 会保留 HTML 的段落结构(换行、列表等),但不保留颜色、字体等样式。
  • 性能:对于超大型 HTML 文件,建议分段处理以避免内存占用过高。
  • 复杂 HTML:对于包含大量 JavaScript、CSS 或复杂布局的 HTML,建议先用对文件进行预处理再转换。

使用 Free Spire.Doc for Python 转换 HTML 到 TXT 非常方便,只需几行代码即可完成,并且能够较好地保留原有的文本结构。相比正则表达式或简单的标签剥离方法,这种方式更稳定可靠。

该免费库还支持将HTML导出为Word、PDF、图片等,具体示例可参考中文教程。

相关推荐
青少儿编程课堂7 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:分层图最短路解析
c++·python·算法·bfs·信息学竞赛
全栈练习生29 分钟前
大模型原理之自适应推理
python·ai
1024奇点9 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
实名上网宋凯宣9 小时前
Django
后端·python·django
Warren2Lynch10 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
如若12310 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
Knight_AL10 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing0311 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
幸运小猿11 小时前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
by2099912 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享