我一直在使用 BeautifulSoup 来解析 html 文件,而我编写的所有脚本都运行良好但速度很慢。所以我正在尝试使用多处理工人池和 BeautifulSoup,这样我的程序可以运行得更快(我有 100,000 - 1,000,000 个 html 文件要打开)。我写的脚本更复杂,但我在这里写了一个小例子。我正在尝试做这样的事情,但我不断收到错误
'RuntimeError: 酸洗对象时超出最大递归深度'
编辑代码
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/)