scrapy 重试请求 是否携带新的请求头和代理ip?

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?设置了重复请求的次数,每次返回结果依然有验证码。

阅读 3.8k
1 个回答

如果你的随机ua和代理ip是中间件形式,那么每次重试都会去执行这些中间件,所以代理和ua会重新加载一个,如果你用的随机的话。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进