与单独使用 lxml 相比,使用 Beautiful Soup 解析 XML 有什么好处吗?

Are there any benefits of using Beautiful Soup to parse XML over using lxml alone?

我经常使用Beautiful Soup来解析HTML个文件,所以最近需要解析一个XML个文件时,我选择了使用它。但是,因为我正在解析一个非常大的文件,所以它失败了。在研究它失败的原因时,我被引导到这个问题:Loading huge XML files and dealing with MemoryError.

这引出了我的问题:如果 lxml 可以处理大文件而 Beautiful Soup 不能,那么使用 Beautiful Soup 而不是直接使用 lxml 有什么好处吗?

如果你看这个 link 关于 BeautifulSoup Parser:

"BeautifulSoup" 是一个 Python 包,它解析 损坏的 HTML,而 "lxml" 速度更快但质量更高HTML/XML。因此,如果您要处理第一个,最好使用 BS... 但是 "lxml" 的优势在于您能够获得 soupparser.

从我在顶部提供的 link 开始,它显示了如何将 "BS" 的功能与 "lxml"

一起使用

所以最后...你最好选择"lxml"。

lxml 速度非常快,而且内存效率相对较高。 BeautifulSoup 本身在效率端的得分较低,但构建为与非标准/损坏的 html 和 xml 兼容,这意味着它最终更加通用。

您选择使用哪一个实际上仅取决于您的用例 -- 网络抓取?可能是废话。解析机器编写的结构化元数据? lxml是个不错的选择。

进行转换时还需要考虑学习曲线——这两个系统实现搜索和导航策略的方式略有不同;足以使在开始学习一个系统后学习另一个系统成为一项不平凡的任务。