requests:出现max retries exceeded with url错误

之前偶然遇到这样一个错误:

出现这个情况是因为在短时间内打开太多的http链接,而且这些链接都是默认keep-alive的形式。那么可以通过以下几个方法来解决:

设置重试次数
1
2
3
import requests

requests.adapters.DEFAULT_RETRIES = 5
在headers中修改Connection的方式为不持久
1
'Connection': 'close'
直接捕获异常
1
2
3
4
try:
res = requests.get(url)
except requests.exceptions.ConnectionError:
print('Connection Error')
也可以是因为请求失败而由本身发送重新链接的速度过快而导致该错误
1
2
3
4
5
6
7
8
9
import time

page = ''
while page == '':
try:
page = requests.get(url)
except:
time.sleep(5)
continue

其实呢,在遇到这个问题之前,我是遇到另一个错误:

这个错误跟前面一个很像,区别在于ProxyError,出错的原因一般有2个:1、IP代理服务器不能使用;2、IP代理使用的协议不正常。(我设置代理协议的时候把http写成了https)

参考文章:

关于python爬虫的深坑:requests抛出异常Max retries exceeded with url

python使用IP代理示例及出错解决方法