跳转至

以下内容基本上是 AI 生成的,我还没校对,可能质量不高

html2text2

Repo   ·   PyPI   ·   Docs

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 消耗并提高模型的理解能力。

  • Python Readability: 先用 Readability 提取正文,再用 Html2Text 转为 Markdown,是处理网页数据的黄金搭档。