Python 中的 html5lib 和 lxml 解析器

pythonserver side programmingprogramming

html5lib 是一个用于解析 HTML 的纯 Python 库。它旨在符合 WHATWG HTML 规范,所有主流 Web 浏览器都已实现该规范。它可以解析 HTML 文档的几乎所有元素,将其分解为不同的标签和片段,可根据各种用例进行过滤。它以与主流浏览器相同的方式解析文本。它还可以处理损坏的 HTML 标签并添加一些必要的标签以完成结构。此外,它是用纯 Python 代码编写的。

lxml 也是一个类似的解析器,但由 XML 功能而非 HTML 驱动。它依赖于外部 C 库。与 html5lib 相比,它速度更快。

让我们通过一个示例标签示例来观察这两个解析器的行为差异并查看输出。

示例

from bs4 import BeautifulSoup
html5_structure = BeautifulSoup("<head><li></p>", "html5lib")
print(html5_structure)
lxml_structure = BeautifulSoup("<head><li></p>", "lxml")
print(lxml_structure)

运行上述代码得到以下结果

输出

<html><head></head><body><li><p></p></li></body></html>
<html><head></head><body><li></li></body></html>

我们可以看到,html5lib 通过合并

标签创建了更完整的 html 文档。lxml 库更侧重于类似 xml 的结构,完全忽略了标签。


相关文章