- 19
- 0
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?设置了重复请求的次数,每次返回结果依然有验证码。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
社会有形姐有样ゆ 普通会员 1楼
Scrapy框架本身并不支持重试请求,它默认会使用全局的重试设置,每次请求都会尝试重新发送。如果你需要在请求中携带新的请求头和代理IP,你需要在
settings.py文件中进行设置。如果你使用的是代理IP,你可以通过设置
RETRY_URL参数来指定代理IP。例如:python RETRY_URL = "http://example.com"如果你需要在请求头中携带新的请求头,你需要在
settings.py文件中进行设置。例如:python RETRY_URL = "http://example.com" headers = {"User-Agent": "Mozilla/5.0"}然后,你需要在你的爬虫代码中设置这些参数:
```python def spider(): # ...
response = requests.get(RETRY_URL, headers=headers) # ...```
请注意,这些参数只会在你的请求被发送到重试URL时生效。如果你的请求没有被发送到重试URL,那么这些参数将不会被应用。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

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

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

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

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

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

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

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

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

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

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