scrapy框架的内置模块与执行流程
scrapy框架内置模块
注意: 爬虫中间件和下载中间件只是运行逻辑的位置不同,作用是重复的: 如替换user-Agent、设置代理ip等。
scrapy框架的执行流程
scrapy框架执行流程说明:
1.scrapy从spider子类中提取start_urls,然后构造为request请求对象
2.将request对象传递给爬虫中间件
3.再将request对象传递给scrap引擎
4.将request对象传递给调度器(调度器负责多个request调度,好比交通管理负责交通的指挥员)
5.将request对象传递给scrapy引擎
6.scrapy引擎将request请求对象传递给下载中间件(下载中间件可以更换代理IP、更换cookie、更换user-agent以及自动重试等)
7.request对象传递给下载中间件经过处理后会给到下载器(下载器通过异步的方式发送http(s)请求),得到响应后封装为response对象
8.将response对象传递给下载中间件
9.下载中间件将response对象传递给scrapy引擎
10.scrapy引擎将response对象传递给爬虫中间件(这里可以处理异常情况等)
11.爬虫对象中的parse函数被调用(这里主要负责对接收到的response对象进行处理。如通过xpath提取数据等)
12.将提取的数据传递给scrapy引擎,它将数据再传递给管道(在管道中可以定义数据存储的方式,如MySQL、Mongodb、csv文件等)