接收Spider传来的请求对象,再将其转发给调度器。
引擎(scrapy): 用来处理整个系统的数据流处理, 触发事务(框架核心)。相当于一个具有触发事务功能的数据中转站,接收各模块处理后的数据后,可将其再转发至相对应的模块。
调度器(scheduler): 用来接收引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回。可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
(1)过滤器:调度器首先使用过滤器将收到的请求对象进行去重,过滤。 (2)队列:调度器会将过滤完后已去重后的对象放到队列当中。 完成后,引起对其发送请求时,调度器可以将队列中的请求对象传递给引擎。
下载器(Downloader): 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
引擎将请求对象传递给下载器,下载器便根据请求对象去互联网上进行数据下载,下载完的数据都存在response里。完成后便将response数据传递给引擎。
Spider拿到response后,便可调用parse进行数据解析。将解析的数据封装到item对象当中,将item对象发送给引擎,引擎再转发给管道。