Skip to main content
 首页 » 编程设计

python之"Fatal Python error: deallocating None"和 urlgrabber

2025年05月04日9zhoujg

我正在尝试通过 HTTP 从单个站点获取 100 万个以上的页面。 urlgrabber 似乎是使用“保持事件”连接的快速解决方案。然而,过了一会儿我的脚本失败了,没有任何堆栈跟踪:“致命的 Python 错误:取消分配无”

这是失败的隔离 python 代码(为简化起见,使用 file://URL,给出相同的结果):

import urlgrabber 
 
url = "file:///some/existing/file.html" 
 
for i in range(0, 15000): 
    print i 
    handle = urlgrabber.urlopen(url, timeout = 1) 
    # do something useful 
    handle.close() 

它在约 3231 个周期后失败。

我做错了什么?

请您参考如下方法:

正如其他人所提到的,当您运行这么多次抓取时,urlgrabber 会出现问题。此外,如果您真的要抓取数十万个 URL,这将非常缓慢。作为替代方案,请考虑使用可信赖的 wget。

当然,你会说你想要一个 Python 解决方案,为此,你绝对应该在 http://scrapy.org/ 查看 Scrapy。 ,这通常被认为是进行这种大规模抓取的最佳方式。