本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。
原文链接:html2text,一个非常好用的 Python 库!
大家好,今天为大家分享一个非常好用的 Python 库 - html2text。
Github地址:https://github.com/Alir3z4/html2text
在当今互联网时代,HTML格式的网页内容随处可见,但在很多场景下我们需要将这些HTML内容转换为更简洁、更易读的纯文本或Markdown格式。html2text是一个功能强大的Python第三方库,专门用于将HTML文档转换为Markdown格式的纯文本。该库由Aaron Swartz开发,具有出色的HTML解析能力和丰富的自定义选项,广泛应用于网页内容抓取、文档转换、邮件处理等领域。
安装
1、安装方法
html2text库可以通过pip轻松安装,执行以下命令即可完成安装:
pip install html2text
2、验证安装
安装完成后,可以通过以下代码验证是否安装成功:
import html2text
print(html2text.__version__)
如果能正常输出版本号,说明安装成功。
主要特性
-
智能HTML解析:能够准确解析各种复杂的HTML结构
-
Markdown输出:将HTML内容转换为标准的Markdown格式
-
丰富的配置选项:支持多种自定义配置,如忽略链接、处理图片等
-
Unicode支持:完美支持中文等多语言字符
-
邮件处理:特别优化了对HTML邮件的处理能力
-
轻量级:库文件小巧,依赖简单
基本功能
1、基础HTML转换
html2text最基本的功能是将HTML字符串转换为Markdown格式。这个功能特别适用于处理网页抓取后的内容清理,或者将富文本编辑器生成的HTML内容转换为更简洁的Markdown格式。通过简单的几行代码,就能实现高质量的格式转换。
import html2text
# 创建HTML2Text实例
h = html2text.HTML2Text()
# 准备HTML内容
html_content = """
<h1>这是标题</h1>
<p>这是一个段落,包含<strong>加粗文字</strong>和<em>斜体文字</em>。</p>
<ul>
<li>列表项1</li>
<li>列表项2</li>
</ul>
"""
# 转换为Markdown
markdown_text = h.handle(html_content)
print(markdown_text)
2、处理链接和图片
在实际应用中,HTML内容经常包含链接和图片元素。html2text库能够智能地处理这些元素,将链接转换为Markdown链接格式,将图片转换为图片引用格式。
import html2text
h = html2text.HTML2Text()
html_with_media = """
<p>访问<a href="https://www.python.org">Python官网</a>了解更多信息。</p>
<img src="https://example.com/image.jpg" alt="示例图片">
"""
result = h.handle(html_with_media)
print(result)
高级功能
1、自定义配置选项
html2text提供了丰富的配置选项,允许用户根据具体需求定制转换行为。可以控制是否忽略链接、是否保留图片、设置文本宽度等。
import html2text
h = html2text.HTML2Text()
# 配置选项
h.ignore_links = True# 忽略链接
h.ignore_images = True# 忽略图片
h.body_width = 0# 不限制行宽
h.ignore_emphasis = False# 保留强调格式
html_content = """
<h2>产品介绍</h2>
<p>我们的<strong>新产品</strong>具有<em>革命性</em>的特性。</p>
<a href="http://example.com">了解更多</a>
<img src="image.jpg" alt="产品图片">
"""
result = h.handle(html_content)
print(result)
2、批量处理文件
在实际项目中,经常需要批量处理多个HTML文件,通过结合文件操作,可以实现高效的批量转换功能。
import html2text
import os
def batch_convert_html_files(input_dir, output_dir):
h = html2text.HTML2Text()
h.body_width = 0
# 确保输出目录存在
ifnot os.path.exists(output_dir):
os.makedirs(output_dir)
# 遍历输入目录中的HTML文件
for filename in os.listdir(input_dir):
if filename.endswith('.html'):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename.replace('.html', '.md'))
with open(input_path, 'r', encoding='utf-8') as f:
html_content = f.read()
markdown_content = h.handle(html_content)
with open(output_path, 'w', encoding='utf-8') as f:
f.write(markdown_content)
print(f"批量转换完成,共处理文件: {len(os.listdir(input_dir))} 个")
# 使用示例
# batch_convert_html_files('html_files', 'markdown_files')
总结
html2text是一个功能强大且易于使用的Python库,为HTML到Markdown的转换提供了完善的解决方案。不仅支持基础的HTML解析和转换功能,还提供了丰富的配置选项来满足不同场景的需求。无论是简单的文本提取,还是复杂的批量文档处理,html2text都能胜任。其轻量级的特性和出色的Unicode支持使其成为处理多语言HTML内容的理想选择。
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

58万+

被折叠的 条评论
为什么被折叠?



