(六)Scrapy的抓取流程——Downloader

本文详细解析了Scrapy框架中下载器的工作流程,包括Scheduler如何调度Request,DownloaderMiddlewareManager如何处理请求和响应,以及DownloadHandlers如何执行具体的下载任务。深入探讨了下载延迟、并发下载数等配置对下载过程的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当通过Scheduler取出一条request之后,engine就会调用_download方法进行对这条request的下载。
在这里插入图片描述
图中downloader的fetch方法就是下载器对request的操作方法。
在这里插入图片描述
通过DownloaderMiddlewareManager在download方法中定义了process_request, process_response, process_exception方法。DownloaderMiddlewareManager会将各中间件的各种process方法存入一个列表里。
在这里插入图片描述
然后在download中依次对method中各流程的对应方法进行调用。
在这里插入图片描述
在process_request部分的最后会将下载器中间件下载前方法返回的request重新扔回给downloader进行下载,_enqueue_request方法中将request加入属于downloader的slot对象的队列中,然后对这个队列进行消费。如果配置文件中设置了DOWNLOAD_DELAY,则会在延迟时间之后再重新调用_process_queue。
_process_queue方法中,从slot的queue中取出request,调用_download方法对该请求进行下载。
使用DownloadHandlers的实例对request进行下载。下载结束后,从slot的transferring集合中取出。(这里是为了配合配置文件中的同时下载数使用)
在这里插入图片描述
最后结束了再回到engine的_downloaded方法,返回的response如果是Request类型,则继续下载,否则返回response。
在这里插入图片描述
下载结束后,就是engine中对输出的response进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值