框架设计思路分析
  # 框架设计思路分析
# 目标
- 回顾并掌握scrapy的模块的作用
 - 回顾并掌握scrapy的数据的传递过程
 - 能够说出自己要实现的框架包含的模块和模块的作用
 
# 1.学习Scrapy,提取它的设计思想(idea)
# 1.1 爬虫的流程
爬虫框架解决的问题是爬虫问题,先来看看爬虫的基本流程:
- 构建请求信息(url、method、headers、params、data)
 - 发起HTTP/HTTPS请求,获取HTTP/HTTPS响应
 - 解析响应,分析响应数据的数据结构或者页面结构
- 提取数据
 - 提取请求的地址
 
 - 对数据进行存储/对新的请求地址重复前面的步骤
 
无论什么爬虫框架,其核心都离不开上面几个步骤
# 1.2 分析scrapy爬虫流程
分析目标:
a. 分析各个组件的功能和作用
b. 分析各个组件之间的协作关系
c. 对组件进行大致的分类(核心和次要) 
 1
2
3
2
3

# 2.scrapy爬虫流程分析结果
Scrapy流程分析图 
- 三个内置对象:
 
 请求对象(Request)
 响应对象(Response)
 数据对象(Item) 
 1
2
3
2
3
- 五个核心组件:
 
 爬虫组件
     构建请求信息(初始的),也就是生成请求对象(Request)
     解析响应对象,返回数据对象(Item)或者新的请求对象(Request)
 调度器组件
     缓存请求对象(Request),并为下载器提供请求对象,实现请求的调度
     对请求对象进行去重判断
 下载器组件
     根据请求对象(Request),发起HTTP、HTTPS网络请求,拿到HTTP、HTTPS响应,构建响应对象(Response)并返回
 管道组件
     负责处理数据对象(Item)
 引擎组件
     负责驱动各大组件,通过调用各自对外提供的API接口,实现它们之间的交互和协作
     提供整个框架的启动入口 
 1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 两个中间件:
 
 爬虫中间件
     对请求对象和数据对象进行预处理
 下载器中间件
     对请求对象和响应对象进行预处理 
 1
2
3
4
5
2
3
4
5
那么对应的,我们也可以在自己的框架是实现这样几个模块和对象
# 小结
- 掌握scrapy的模块的作用
 - 掌握scrapy的数据的传递过程
 
编辑  (opens new window)