以下内容基本上是 AI 生成的,我还没校对,可能质量不高
html2text2¶
html2text 是一个将 HTML 转换为干净、可读的 Markdown 文本的 Python 库。html2text2 是对经典的 html2text 库的复活和现代化维护版本。
- 因为官方欠维护 #418,所以我 fork 了并发布到了 PyPI 上作为
html2text2 - 那段时间写了一篇 《一言不合就 fork》
- 用 Vitepress 生成了文档。后来在 dl-a2t 中也是用的 vitepress(当然 python 项目用 vitepress 就只能纯粹写文档了,做不了别的)
Features¶
- HTML to Markdown: 将网页内容转换为标准的 Markdown 格式。
- Clean Output: 自动去除多余的标签和样式,只保留内容结构。
- Configurable: 支持忽略链接、图片,或者自定义转换规则。
Implementation¶
它通过解析 HTML DOM 树,遍历每个节点,并根据节点的类型(如 <h1>, p, a, ul)生成对应的 Markdown 标记。
My Clever Bits(我的巧思)¶
原版的 html2text 已经很久没有维护了。我接手后,主要做的是 Modernization。
我为其添加了现代 Python 的构建系统(PDM/PyProject.toml),修复了在处理现代网页(如复杂的 CSS Grid/Flex 布局产生的嵌套结构)时的一些 Bug,并增加了对新 HTML5 标签的支持。
Deep Insight(深入洞见)¶
将 HTML 转换为 Markdown 听起来简单,但处理 Whitespace(空白字符)是最大的难点。
HTML 对空白字符的处理规则非常复杂(多个空格折叠为一个,块级元素前后的换行等)。在 html2text 中,我维护了一套复杂的状态机来追踪当前的缩进层级和空白状态,确保生成的 Markdown 既保留了原文的结构,又不会出现多余的空行或错乱的缩进。
这对于将网页内容喂给 LLM 非常重要,因为干净的 Markdown 能显著减少 Token 消耗并提高模型的理解能力。
Related Projects¶
- Python Readability: 先用 Readability 提取正文,再用 Html2Text 转为 Markdown,是处理网页数据的黄金搭档。