背景介绍
在前面 RAG 项目结构化文件解析方案比较 文章中对常见的 html 解析方案进行了比较,发现 html_text + python-readability 可以实现高质量的 html 内容提取。
在前一篇文章 迭代 14 年的高质量 html 提取方案 中对 python-readability 库进行了介绍,这篇文章就对剩下的 html_text 库进行介绍。
html_text 简介
html_text 是一个 html 文本提取库,可以将 html 内容转换为文本内容,但是与常规 html 解析库相比,html_text 转换出的文本更加格式化:
- 忽略内联样式、javascript、注释和其他用户通常不可见的文本;
- 空白内容标准化,在内联元素周围添加空格分隔内容;
- 在合适的位置添加换行符,与浏览器呈现的效果保持一致;
整体而言,html_text 通过补充合适的空格和换行符,将解析出的文本更加接近浏览器呈现的效果。
在之前的测试中,对于下面的文本内容:
使用 unstructed 解析出的文本元素内容为:
但是 html_text 解析出的文本内容为:
这样可以为后续的处理提供一个更准确的文本内容,避免大量碎片化的无意义文本。
实现方案
html_text 库的源码比较精简,核心的代码不到 100 行。在开始介绍实现方案前,可以先大致了解下常规的 html 结构,类似如下所示:
<html>
<body>
<p>
<div>test</div>
</p>