白话Scrapy框架
框架组成
-
引擎
它就是整个爬虫框架的大脑,负责指挥,实现信号、数据在不同组成部分之间的传递
-
调度器
它是一个队列,一个存放request请求的队列,所有由引擎发过来的request,都会在调度器这里排好队,等着下一步的处理
-
下载器
将引擎交付过来的request指令完成,得到response,并返回给引擎
-
爬虫
此时说的爬虫更像是一个军师,它根本没有尽到一个爬虫的义务——爬出去……
它待在家中等着下载器下载完,然后喝着快乐水,处理下载器带回来的response。从response筛选出所需要的东西。
-
管道
进行数据的处理,这里的数据是从爬虫那边筛选出来的,管道进行数据的进一步清洗、筛选、存储等
-
下载中间件
自定义下载时的相关东西,如代理
-
爬虫中间件
自定义request请求和response的过滤
白话Scrapy组成
引擎是整个框架的大脑,负责调解各个模块的工作,基本所有数据交换、操作都是需要它来安排的,我们一般不会对它进行什么操作(后续的数据交接直接省略掉引擎的环节)
当我们写好爬虫部分,明确了需要爬取的目的地,就会将该request请求放到调度器中进行排队,然后在引擎的安排下,进行后续调度。当轮到了某一request请求,该请求将会被交付给下载器,然后下载器将被当做苦力,去目的地将目的地的所有内容(response)带回来。接下来,这些内容被交付给爬虫,爬虫会进行数据的定位、筛选,然后将筛选过的数据交给管道,让管道进行进一步的清洗,最终达到我们的预期,然后将这些好数据存入数据库;或者爬虫想继续去别的地方拿东西,然后就会重复上述步骤。直到达到我们的预期。
以上仅为笔者的个人理解。
如有错误,请不吝指正!