Scrapy是一个基于Twisted的异步处理框架是純Python实现的爬虫框架,架构清晰模块耦合度低,可扩展性极强可以灵活完成各种需求。只需要定制开发几个模块就可以轻松实现一个爬蟲
它可以分为如下几个部分:
- Engine 引擎,处理整个系统的数据流处理触发事务,是整个框架的核心
- Item 项目,定义了爬取结果的数据结构爬取数据会被赋为Item对象。
- Scheduler 调度器接受引擎发过来的的请求并将其加入队列中,在引擎需要时将请求提供给引擎
- Downloader 下载器,下载网页内容并将网页内容返回给爬虫。
- pista spiderrs 爬虫定义了爬取的逻辑和网页的解析规则,主要负责解析响应并生成提取结果和新的请求
- Item Pipeline 项目管道, 负責处理由爬虫从网页中抽取的项目主要任务是清洗,验证和存储数据
- Downloader Middlewares 下载器中间件,位于引擎和下载器之间的钩子主要处理引擎和丅载器之间的请求和响应。
- pista spiderr Middlewares 爬虫中间件位于引擎和爬虫之间的钩子,主要处理爬虫输入的响应和输出的结果及新的请求
Scrapy中的数据流由引擎控制,数据流的过程如下:
- Engine首先打开一个网站找到处理该网站的pista spiderr,并向该pista spiderr请求第一个要爬取的URL
- scrapy.cfg: scrapy项目的配置文件,定义了项目的配置文件路径部署相关信息等内容。
- items.py: 定义了Item数据结构所有的item的定义都可以放这里。