返回码418,scrapy 重新请求
Posted xunhanliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回码418,scrapy 重新请求相关的知识,希望对你有一定的参考价值。
问题情景:
scrapy爬取网页,返回值418(按照请求来说,是一个完整的网络请求)。说明此接口已经被后台爬虫检测程序检测到了。
通过研读scrapy文档,在自定义的418检测下载中间件里面,process_response中检测返回值,并设置request的http/https代理,然后return request。
按照文档所述,此request会被加入到下载调度器中重新download。
bug:
返回的request未生效!!!没有重新下载!
解决
通过研读RetryMiddleware的源码。见:https://docs.scrapy.org/en/latest/_modules/scrapy/downloadermiddlewares/retry.html#RetryMiddleware
request.dont_filter = True # 禁止被过滤掉
说明直接返回request会被过滤掉。需要设置dont_filter。
以上是关于返回码418,scrapy 重新请求的主要内容,如果未能解决你的问题,请参考以下文章