Python 中的 html5lib 和 lxml 解析器


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 样式的结构,并且完全忽略了

Pradeep Elance

更新于: 20-12-2019

开启你的职业生涯

完成课程获得认证

开始学习
广告