scrapy框架的理解

  在每一次学习一个新东西之前,需要知道的几个问题。这个东西是什么(what),怎么使用(how),为什么(why)

scrapy的概念:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的框架。

scrapy的作用:通过少量代码实现快速抓取。

scrapy一共有5个模块和2个中间件,模块分别是Spider爬虫模块,engine引擎模块,scheduler调度器模块,Downloader下载器模块,Pipeline管道模块。中间件分别是Downloader--Middlewares(下载器中间件),

Spider-Middlewares(爬虫中间件)。

engine引擎模块:负责数据和信号在不同模块间的传递。

scheduler调度器模块:实现一个队列,存放引擎发过来的request请求对象。

Downloader下载器模块:发送引擎发过来的request请求,获取响应,并将response传递给引擎。

Spider爬虫模块:处理引擎发过来的response,提取数据,提取url,并交给引擎。

Pipeline管道模块:处理引擎传递过来的数据,比如存储。格式可以是csv、json、mongodb、redis、mysql.

下载中间件(downloader middleware):可以自定义的下载扩展,比如设置代理Ip。

爬虫中间件(spider middleware):可以自定义request请求和进行response过滤。

scrapy的工作原理流程:

1.spider---request---engine

2.engine---request---scheduler

3.scheduler---request---engine

4.engine---request---downloader

5.downloader---response---engine

6.engine---response---spider

7.spider---new_url---engine

重复1-6

8.spider---data---engine

9.engine---data---pipeline

scrapy框架的运行流程以及数据传递过程:

  1. 调度器把requests-->引擎-->下载中间件--->下载器
  2. 下载器发送请求,获取响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
  3. 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器
  4. 爬虫提取数据--->引擎--->管道
  5. 管道进行数据的处理和保存
原文地址:https://www.cnblogs.com/hjl666/p/10882737.html