“致命的Python错误:解除分配无”和urlgrabber

时间:2011-02-03 19:35:48

标签: python

我正在尝试通过HTTP从单个站点获取1m +页面。 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次循环后失败。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

正如其他人提到的那样,当你运行这么多抓斗时,urlgrabber会遇到问题。而且,如果你真的抓住了成千上万的网址,那将会非常缓慢。作为替代方案,可以考虑信任的wget。

当然,你会说你想要一个Python解决方案,为此,你绝对应该在http://scrapy.org/检查Scrapy,这通常被认为是做这种方式的最好方法。巨大的刮擦。