我正在尝试通过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次循环后失败。
我做错了什么?
答案 0 :(得分:1)
正如其他人提到的那样,当你运行这么多抓斗时,urlgrabber会遇到问题。而且,如果你真的抓住了成千上万的网址,那将会非常缓慢。作为替代方案,可以考虑信任的wget。
当然,你会说你想要一个Python解决方案,为此,你绝对应该在http://scrapy.org/检查Scrapy,这通常被认为是做这种方式的最好方法。巨大的刮擦。