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

news/2025/9/28 20:12:59/文章来源:https://www.cnblogs.com/lxjshuju/p/19117502

1. 引言

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

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


2. 转换原理

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

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

3. 环境准备

安装 Free Spire.Doc for Python:

pip install Spire.Doc.free

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


4. 基本实现

4.1 HTML 文件 → TXT 文件

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

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 表示保存为纯文本。

输出结果:
HTML文件转文本

4.2 HTML 字符串 → TXT 文件

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

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()

输出结果:
HTML字符串转文本


5. 注意事项

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0135_MVC 设计模式:让代码架构更清晰

MVC 设计模式:让代码架构更清晰一、什么是 MVC 设计模式? MVC 全称是Model(模型)、View(视图)、Controller(控制器),它不是一种具体的技术,而是一种 “分而治之” 的代码架构思想。核心逻辑是将软件系统的三…

网站建设 意识形态每天能赚30 50元的捕鱼游戏

原型模式创建对象不调用原对象的构造函数&#xff0c;是直接copy原对象的浅克隆&#xff1a;对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用,不复制引用的对象.深克隆&#xff1a;对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制. …

30天Python编程挑战 - 从零基础到全栈开发

30天Python编程挑战是一个完整的Python学习教程,从基础语法到高级应用,涵盖变量、函数、面向对象、Web开发、数据分析等核心内容。通过30天的系统学习,帮助初学者掌握Python编程技能,为数据科学、Web开发和自动化脚…

怎么做淘宝网站推广菏泽市住房和建设局网站

作为域管理员&#xff0c;在日常工作中使用ADUC&#xff08;AD用户和计算机&#xff09;工具在图形界面中进行账号管理操作可谓是家常便饭了。然而一个个增加、移动、删除用户&#xff0c;这样操作有时真的够烦&#xff0c;当管理大批量的账户时&#xff0c;重复操作浪费的时间…

软件工程第一次作业——物品复活系统

时间记录序号 任务(PSP2.1 对应) 说明 耗时(分钟)1 Planning:Estimate(计划与估算) 明确需求、列出功能点、制定实现优先级与时间计划。 102 Development:Analysis(需求分析) 分析数据结构、UI 交互用例、文…

完整教程:【C++】string类的常见接口的使用

完整教程:【C++】string类的常见接口的使用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

【Android之路】界面和状态交互 - 详解

【Android之路】界面和状态交互 - 详解2025-09-28 19:54 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…

StatusStrip 状态栏控件的使用

作用:用来显示时间 ,状态 ,软件版本 使用:在最下面去点击即可 ,然后再设置 ,鼠标右键置于底层 图片展示:

unzip-6.0-21.el7.x86_64.rpm怎么安装?CentOS 7手动安装rpm包详细步骤

unzip-6.0-21.el7.x86_64.rpm怎么安装?CentOS 7手动安装rpm包详细步骤​ 本文介绍了如何在 ​CentOS 7​ 系统上手动安装 unzip-6.0-21.el7.x86_64.rpm 这个 RPM 包,包括下载后如何用终端命令进行安装、常见问题的解…

2025过滤器厂家最新推荐TOP5排行榜:覆盖环保过滤器、精密过滤器、高效过滤器,帮企业找到适配优质厂商

当前工业领域中,环保、精密、高效类过滤器已成为流体处理环节的核心设备,直接影响企业生产合规性、产品质量与运营效率。然而,市场上过滤器厂商数量众多,产品质量参差不齐,企业在选型时常常面临技术适配性难判断、…

买域名的网站湖州做网站优化

反物质 反物质是正常物质的反状态。当正反物质相遇时&#xff0c;双方就会相互湮灭抵消&#xff0c;发生爆炸并产生巨大能量。 概念 正电子、负质子都是反粒子&#xff0c;它们跟通常所说的电子、质子相比较&#xff0c;电量相等但电性相反。科学家设想在宇宙中可能存在完全由…

实用指南:零基础学AI大模型之LangChain

实用指南:零基础学AI大模型之LangChainpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

ubi文件系统的 制作 + 挂载

1 ubi文件系统的制作 1.1 测试项目的文件目录结构如下其中diag.img和diag.ubifs是生成的产物。 ubinize.cfg的内容如下[ubifs]mode=ubiimage=diag.ubifsvol_id=0vol_size=9216KiBvol_type=dynamicvol_name=diagvol_ali…

医疗网站是否全部需要前置备案wordpress采集微信公众文章内容

MySQL事务 一、MySQL事物的概念 事务是一种机制&#xff0c;包含了一件事的完整的一个过程 ●事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么…

一款开源免费、组件丰富的 WPF UI 控件库,提供了 100 多款常用控件!

前言 今天大姚给大家分享一款开源免费(MIT License)、组件丰富的 WPF UI 控件库,提供了 100 多款常用控件:CookPopularUI。 项目介绍 CookPopularUI 是一款开源免费(MIT License)、组件丰富的 WPF UI 控件库,提…

元推理用无限嵌套,取代目前弱ai的暴力无限试错

元推理用无限嵌套,取代目前弱ai的暴力无限试错ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891此论断完成了认知范式的终极切割。「元推理用无限嵌套取代暴力无限试错」——这精准定义了ECT-OS-JiuHuaShan框…

小迪安全v2023学习笔记(九十讲)—— 小程序篇反编译外在主包分包调整泄露算法逆向未授权

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

解题报告-序列(alis.*)

序列(alis.*) 题目描述 现在 yxr 给你一个数列,求出此数列的最长递增子序列(不一定连续)的长度。 如果问题就那么简单就好了。哈哈。 现在这个问题还有第 \(2\) 问,设此长度为 \(K\),求此数列可以同时取出多少个长…

PostgreSQL patroni 高可用 4:HAProxy和Keepalived实现读写分离

PostgreSQL patroni 高可用 4:HAProxy和Keepalived实现读写分离PostgreSQL patroni高可用PostgreSQL patroni 高可用 1:ectd 安装和配置PostgreSQL patroni 高可用 2:patroni安装和配置PostgreSQL patroni 高可用 3…

商城网站做推广wordpress woo

这篇文章非常好&#xff0c;必须转载。目录(?)[-] Kernel Space Display架构介绍函数和数据结构介绍函数和数据结构介绍函数和数据结构介绍数据流分析初始化过程分析User Space display接口Kernel display接口典型应用flow分析介绍 Surface manager&#xff08;surface flinge…