3 分•作者: ayas_behera•3 个月前
问题<p>我使用BeautifulSoup已经有一段时间了。它在Python抓取中以易用性著称,但当处理大规模数据集时,它几乎总是成为性能瓶颈。<p>在Python中解析复杂或庞大的HTML树,通常会面临高内存分配成本以及树遍历过程中Python对象模型的开销。在我的生产抓取工作负载中,解析器消耗的CPU周期甚至超过了网络I/O。Lxml速度很快,但在处理大型文档时也会占用大量内存,并且可能在处理格式不规范的HTML时出现问题。<p>解决方案<p>我希望保持BS4的API兼容性,这让它非常出色,但同时消除减慢高容量管道速度的开销。它还使用了html5ever,这就是我构建WhiskeySour的原因。是的……我*用直觉写了整个东西*。<p>WhiskeySour是一个即插即用的替代品。你应该能够用“from whiskeysour import WhiskeySour”替换“bs4 import BeautifulSoup”,并立即看到速度提升。以前需要30多分钟的工作流程现在可能只需要不到5分钟。<p>我在这里分享了该库的详细架构:
<a href="https://the-pro.github.io/whiskeySour/architecture/" rel="nofollow">https://the-pro.github.io/whiskeySour/architecture/</a><p>这是与bs4和html.parser的基准测试报告:<a href="https://the-pro.github.io/whiskeySour/bench-report/" rel="nofollow">https://the-pro.github.io/whiskeySour/bench-report/</a><p>这是该仓库的链接:<a href="https://github.com/the-pro/WhiskeySour" rel="nofollow">https://github.com/the-pro/WhiskeySour</a><p>我分享这个的原因<p>我正在寻求社区在两个方面的反馈:<p>1. 边缘情况:如果你有BS4能很好处理的特别混乱或格式不规范的HTML,我很想知道WhiskeySour是否会遇到任何回归问题。<p>2. 基准测试:如果你正在运行高容量解析器,我很乐意你能在你自己的数据集上运行一个测试并分享结果。