最近做的一个小爬虫,挂在服务器上十几分钟就会重启,查看日志提示错误:

Max retries exceeded with url

查了许多资料,说是因为requests使用了urllib3,而urllib3默认是保持连接的,是由于http连接太多没有关闭造成的。只需要将Keep-Alive设置为False即可,对应代码:

s.keep_alive = False # 关闭多余连接

可并没有解决问题,然后又继续寻找解决方法...

然后作出如下修改:

requests.adapters.DEFAULT_RETRIES = 5 # 增加重连次数 
s = requests.session() s.keep_alive = False # 关闭多余连接  

然而这样也还是会报错...

折腾了许久,才发觉是因为代理ip池的缘故,去掉就好了。

也许是因为免费的接口ip质量不高吧,虽然做了验证但还是会不定时失效。

当然,以上错误也可能是因为访问目标站次数频繁,被禁止访问。解决的办法则是使用代理IP池。