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