- 28
- 0
目标:希望在请求ip失败,或则在遇到验证码的时候 重复发起当前请求,直到请求成功,减少爬取的数据遗漏。
问题:不知我的思路是否正确,目前能在中间件识别到有验证码,也能重复请求,并且确实是携带了新的ip。
可是重复请求返回的依然是验证码,中间件方法里是不是少些了什么?
(设置了代理ip,随机请求User-Agent)
中间件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('1中间件处 发现有验证码,需要重复请求!')
time.sleep(random.choice(range(6)))
print('当前请求ip:', request.meta.get('proxy'))
return self._retry(request, response.body, spider) or response
return response
def process_exception(self, request, exception, spider):
if isinstance(exception, self.EXCEPTIONS_TO_RETRY) and not request.meta.get('dont_retry', False):
# 删除该代理
#self.delete_proxy(request.meta.get('proxy', False))
time.sleep(random.randint(3, 5))
print('2中间件处 发现请求异常,需要重复请求!')
return self._retry(request, exception, spider)
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
