我经常使用Beautiful Soup来解析HTML文件,所以当我最近需要解析XML文件时,我选择使用它。但是,因为我正在解析一个非常大的文件,所以它失败了。在研究它失败的原因时,我被引导到了这个问题:Loading huge XML files and dealing with MemoryError。
这引出了我的问题:如果lxml可以处理大文件而Beautiful Soup不能,那么使用Beautiful Soup有什么好处而不是直接使用lxml吗?
答案 0 :(得分:1)
如果您查看有关BeautifulSoup Parser的链接:
“BeautifulSoup”是一个解析损坏的 HTML的Python包,而“lxml”的速度更快但是具有高质量的HTML / XML。因此,如果您正在处理第一个,那么您最好使用BS ... 但拥有“lxml”的优势在于您可以获得soupparser
。
从我在顶部提供的链接,它显示了如何使用“BS”与“lxml”的功能
所以最后 ...你最好用“lxml”。
答案 1 :(得分:1)
lxml非常快,而且内存效率相对较高。 BeautifulSoup本身在效率方面得分较低,但是它与非标准/破碎的html和xml兼容,这意味着它最终更加通用。
您选择使用的只是依赖于您的用例 - 网页抓取?可能是BS。解析机器编写的结构化元数据? lxml是一个很好的选择。
在进行切换时还需要考虑学习曲线 - 两个系统以稍微不同的方式实现搜索和导航策略;足以在开始学习另一个非平凡任务后学习一个系统。