gpt4 book ai didi

python - 将 BeautifulSoup 与多处理池映射一起使用时的递归深度错误

转载 作者:太空狗 更新时间:2023-10-29 19:27:55 24 4
gpt4 key购买 nike

我一直在使用 BeautifulSoup 来解析 html 文件,而我编写的所有脚本都运行良好但速度很慢。所以我正在尝试将多处理工作池与 BeautifulSoup 一起使用,这样我的程序可以运行得更快(我有 100,000 - 1,000,000 个 html 文件要打开)。我写的脚本比较复杂,但我在这里写下了一个小例子。我正在尝试做这样的事情,但我一直收到错误

'运行时错误:酸洗对象时超出最大递归深度'

编辑代码

from bs4 import BeautifulSoup
from multiprocessing import Pool
def extraction(path):
soup=BeautifulSoup(open(path),"lxml")
return soup.title

pool=Pool(processes=4)
path=['/Volume3/2316/http/www.metro.co.uk/news/852300-haiti-quake-victim-footballers-stage-special-tournament/crawlerdefault.html','/Volume3/2316/http/presszoom.com/story_164020.html']
print pool.map(extraction,path)
pool.close()
pool.join()

在进行了一些搜索并深入研究了一些帖子之后,我了解到错误的发生是因为 BeautifulSoup 超出了 Python 解释器堆栈的深度。我试图提高限制并运行相同的程序(我上升到 3000)但错误仍然存​​在。我停止提高限制,因为打开 html 文件时问题出在 BeautifulSoup 上。

将多处理与 BeautifulSoup 结合使用会加快我的执行时间,但我无法弄清楚如何应用它来打开文件。

关于如何将 BeautifulSoup 与多处理一起使用或如何克服此类错误,是否有人有任何其他方法?

任何形式的帮助都将不胜感激,我坐了几个小时试图修复它并理解为什么我会收到错误。

编辑

我用我在路径中给出的文件测试了上面的代码,我得到了与上面相同的 RuntimeError

可以在此处访问文件 ( http://ec2-23-20-166-224.compute-1.amazonaws.com/sites/html_files/ )

最佳答案

我认为原因是整个 soup.title 对象的返回。看起来,所有的childrenparent 元素以及他们的children 和parents 等等都在这一刻被分析,这引发了递归错误。

如果对象的内容是你需要的,你可以简单地调用str-方法:

return soup.title.__str__()

不幸的是,这意味着您无法再访问 bs4 库提供的所有其他信息。

关于python - 将 BeautifulSoup 与多处理池映射一起使用时的递归深度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10374504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com