杉杉锅锅 2022-04-29 11:12 采纳率: 20%
浏览 73
已结题

scrapy 在process_response中返回request 异常

背景
在我爬一个网站的时候 这个网站的一个反爬措施是 同一ip检测到一分钟额你请求频率过高 就会返回一个 文字点选的验证码 持续十分钟,十分钟之后就 正常请求。

措施
因为验证码只持续十分钟 所以我选择等待十分钟
我在process_response中判断
if "人机认证" in response.text:
while True:
# 循环的用requests模块去请求url 如果没有验证码了就退出循环
if "人机认证" in requests.get("url").text:
time.sleep(60)
else:
break
return request

问题
在我测试的过程中 出现验证码后 我就去浏览器 通过文字点选验证码 按道理说,在等待一分钟后,程序就离开阻塞 ,正常运行起来。然后情况却是依然不断的有日志表示 response中有人机认证
另外我发现一个问题 在正常的scrapy请求的时候 日志中会有一条相关日志

img


然而在我的问题中却并没有scrapy请求日志

img

代码
作为参考附上我的代码:

class *************oaderMiddleware3:
    def process_request(self, request, spider):
        request.meta['update_time'] = spider.update_time
        return None

    def process_response(self, request, response, spider):
        if "人机认证" in response.text:
            print("人机认证出现", request, request.meta.get("update_time"),spider.update_time)

            if request.meta.get('update_time') != spider.update_time:
                print("直接重试")
                return request

            while True:
                if "人机认证" in requests.get("https://***********54869574").text:
                    time.sleep(1)
                else:
                    spider.update_time = datetime.datetime.now()
                    print("认证通过", spider.update_time, datetime.datetime.now())
                    time.sleep(5)
                    break

            return request
        return response

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月7日
    • 修改了问题 4月29日
    • 创建了问题 4月29日

    悬赏问题

    • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
    • ¥15 Vue3地图和异步函数使用
    • ¥15 C++ yoloV5改写遇到的问题
    • ¥20 win11修改中文用户名路径
    • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
    • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
    • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
    • ¥15 帮我写一个c++工程
    • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
    • ¥15 关于smbclient 库的使用