引擎:最核心的部件,使得整个框架运转起来
按照数字顺序进行运转,
Spider(爬虫):编写spiders程序,它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
Scrapy的整个数据处理流程由引擎进行控制,通常的运转流程包括以下的步骤:
1.引擎询问蜘蛛需要处理哪个网站,并让蜘蛛将第一个需要处理的URL交给它。2.引擎让调度器将需要处理的URL放在队列中。
3.引擎从调度那获取接下来进行爬取的页面。
4.调度将下一个爬取的URL返回给引擎,引擎将它通过下载中间件发送到下载器。
5.当网页被下载器下载完成以后,响应内容通过下载中间件被发送到引擎;如果下载失败了引擎会通知调度器记录这个URL,待会再重新下载。
6.引擎收到下载器的响应并将它通过蜘蛛中间件发送到蜘蛛进行处理。
7.蜘蛛处理响应并返回爬取到的数据条目,此外还要将需要跟进的新的URL发送给引擎。
8.引擎将抓取到的数据条目送入数据管道,把新的URL发送给调度器放入队列书
上述操作中的第2步到第8步会一直重复直到调度器中没有需要请求的URL,爬虫就停止工作