01 scrapy 框架介绍

1. 架构介绍
  • engine: 引擎, 处理整个系统的数据流处理, 触发事务, 是整个框架的核心
  • Item: 项目, 它定义了爬取结果的数据结构, 爬取的数据会被赋值成Item对象
  • Scheduler: 调度器, 接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎
  • Downloader : 下载器, 下载网页内容, 并将网页内容返回给蜘蛛
  • Spiders: 蜘蛛, 其内定义了爬取的逻辑和网页的解析规则, 它主要负责解析响应并生成提取结果和新的请求
  • Item Pipeline : 项目管道, 负责处理由蜘蛛从网页中抽取的项目, 它主要任务就是清洗, 验证和存储数据
  • Downloader Middlewares : 下载器中间件, 位于引擎和下扎起之间的钩子框架, 主要处理引擎和下载器之间的请求和响应
  • Spider Middlewares : 蜘蛛中间件, 位于引擎和蜘蛛中间的钩子框架, 主要处理蜘蛛输入的响应和输出的结果以及新的请求
2.数据流
Scrapy中的数据流由引擎控制, 数据流的过程如下:
  1. Engine首先打开一个网站, 找到处理该网站的spider, 并向该Spider请求第一个要爬取的URL
  2. Engine 从Spider中获取到第一个要爬取的URL, 并通过Schedule 以 Request的形式调度
  3. Engine 向Schedule请求下一个要爬取的URL,
  4. Scheduler返回下一个要爬取的URL给Engine, Engine将URL通过 Downloader Middlewares转发给Downloader下载
  5. 一旦页面下载完毕, Downloader生成该页面的Response, 并将其通过Downloader Middlewares发给Engine.
  6. Engine从下载器中收到Response, 并将其发送给Spider处理
  7. Spider处理Response, 并返回爬取到的Item及新的Request给Engine
  8. Engine将Spider返回的Item给Item Pipeline,将新的Request 给 Scheduler
  9. 重复 2 - 8, 直到 Scheduler中没有更多的 Request, Engine关闭该网站, 爬取结束
通过多个组件的相互协作, 不同组件完成工作的不同, 组件对异步处理的支持, Scrapy最大限度的利用了网络带宽, 大大提高了数据爬取和处理的效率
 
3. 项目结构
Scrapy框架和pyspider不同, 它是通过命令行来创建项目的, 代码的编写还是需要IDE,
 
 
原文地址:https://www.cnblogs.com/zhangjian0092/p/11692990.html