scrapy设置RetryMiddleware 中间件
目的是想在遇到验证码的时候,重新发起当前请求,从而增加爬取数据的完整性,
class LocalRetryMiddleware(RetryMiddleware):
def process_response(self, request, response, spider):
if request.meta.get('dont_retry', False):
return response
print('输出当前页面:', response.body)
# 验证码判断
img = response.xpath('//img[@src="/Account/ValidateImage"]')
print(img)
if img:
print('3中间件处 发现有验证码,需要重复请求!')
time.sleep(random.choice(range(6)))
print('当前请求ip:', request.meta.get('proxy'))
return self._retry(request, response.body, spider) or response
以上代码是否就是重复发起请求
那么重复请求 是否携带随机UserAgent 和 新的代理IP?设置了重复请求的次数,每次返回结果依然有验证码。
如果你的随机ua和代理ip是中间件形式,那么每次重试都会去执行这些中间件,所以代理和ua会重新加载一个,如果你用的随机的话。