下面是简单的一个重复请求过程,更高级更简单的请移步本博客: https://www.cnblogs.com/fanjp666888/p/9796943.html
在爬虫的执行当中,总会遇到请求连接超时的情况,下面的代码块是在请求超时的情况下,捕捉超时错误并连续发送多次请求,只到请求连接成功。
NETWORK_STATUS = True # 判断状态变量
try:
response = requests.post(url, headers=self.headers, data=data, timeout=5)
if response.status_code == 200:
return response
except requests.exceptions.Timeout:
global NETWORK_STATUS
NETWORK_STATUS = False # 请求超时改变状态
if NETWORK_STATUS == False:
'''请求超时'''
for i in range(1, 10):
print '请求超时,第%s次重复请求' % i
response = requests.post(url, headers=self.headers, data=data, timeout=5)
if response.status_code == 200:
return response
return -1 # 当所有请求都失败,返回 -1 ,此时有极大的可能是网络问题或IP被封。