Scrapy是什么?
Scrapy是一套基于Twisted的移步处理框架,是纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容或者各种图片。
Scrapy架构图(绿线为数据流)
- Scrapy Engine(引擎):其本身什么事都不做,就只号发指令,完成通信的功能,指派四个组件完成相关操作。
- Scheduler(调度器):负责接收 Scrapy Engine 发送来的 Requests,并将其整理(去重处理)排列进队列存放,当 Scrapy Engine 需要时,还给 Scrapy Engine 发送去 Downloader 进行下载。
- Downloader(下载器):负责下载 Scrapy Engine 发送来的 Requests,并将其获取的 Responses 文件(经过下载中间件处理的)交还给 Scrapy Engine,由 Scrapy Engine 交给 Spiders 进行处理。
- Spiders(爬虫):负责解析 Responses 文件 ,从中提取需要的数据 (Item、URL)。将 Item 数据交由 Scrapy Engine 传送给 Item Pipeline,将新的请求(URL) 交由 Scrapy Engine,再次进入 Scheduler 队列。
- Item Pipeline(管道):负责处理存储 Spiders 获取的 Item,并对数据进行详细分析、去重、过滤、存储(.csv、.json)等。
- Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件,进行封装代理或 http 头用于隐藏我们自己的地方,完成 Scrapy Engine 和 Downloader 之间的交互通信。
- Spider Middlewares(爬虫中间件):一个可以自定义扩展 Scrapy Engine 与 Spiders 之间通信的功能组件,对进来的 Responses 和出去的 Requests 进行一定的修改。