scrapy

scrapy的流程

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):可以自定义扩展下载功能的组件(代理、cokies等)。

Spider Middlewares(Spider中间件):可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

1.创建项目:

先切换到自定义的目录下 

执行命令:

scrapy startproject (爬虫名字:spiderproject)

2.创建(普通)文件

切换到项目目录下 进入项目主目录 创建爬虫文件

执行命令:

scrapy genspider baiduspider 域名(baidu.com)

创建文件

切换到项目目录下 进入项目主目录 创建爬虫文件

执行命令:

scrapy genspider baiduspider 域名(baidu.com)

3.用pycharm打开项目

4.运行爬虫文件

先切换到爬虫文件所在目录

命令行:scrapy crawl (爬虫文件名字)

scrapy框架如何工作

启动爬虫:

Scrapy框架为Spider的 start_urls 属性中的每个url创建了Request 对象,并将 parse 方法作为回调函数(callback)赋值给了requests,而requests对象经过调度器的调度,执行生成response对象并送回给parse() 方法进行解析,所以请求链接的改变是靠回调函数实现的。

总结:

1.spider的yield将request发送给engine

2.engine对request进行排队处理 不做任何操作 在scheduler需要时返回给scheduler

3.scheduler生成request交给engine

4. engine拿到request通过middleware发送给downloader

5.downloader在获取到response后 经过middleware发送给engine

6. engine在获取到response后,返回给spider,spider会对response进行处理 解析出items或者requests

7.将解析出来的items或者requests,items  发送给pipelines,将requests发送给scheduler

8.只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求

你可能感兴趣的:(scrapy)