scrapy流程大致分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy流程大致分析相关的知识,希望对你有一定的参考价值。

 

Scrapy流程分析

Scrapy 是一个重型爬虫框架。主要分为5部分:引擎(Engine)、调度器(Scheduler)(这个不太熟悉)、下载器(Downloader) 、爬虫(Spider)、管道(Item Pipeline)。

  1. Engine是scrapy的核心,主要负责调度各个组件,保证数据流转。其中包括每五秒自动运行的呼吸函数。
  2. Scheduler负责管理任务、过滤任务、输出任务的调度器,存储、去重(中间件??)
  3. Downloader 负责从网页上下载网页数据,吐给调度器处——吐给spider处理——吐给pipeline进行存储处理
  4. Spider 爬虫
  5. Item Pipeline负责输出结构化数据,可自定义输出位置(文件、mysql、MangoDB..)
  6. 中间件:除了以上五个部分,还有中间件也是非常重要的。中间件主要分为两种:Downloader Middlewares(下载中间件)、Spider Middlewares(爬虫中间件)。主要用于过滤、处理下载的数据或者爬虫的返回值

 

流程图如下:

技术分享图片

scrapy流程图(自己瞎画的)

 

流程概述:

  1. Engine从爬虫中获取初始化请求(种子URL)
  2. Engine把该请求放入Scheduler中, 同时获取下一个请求(这两为异步)
  3. Scheduler返回给Engine一个待下载的请求
  4. Engine发送请求给下载器,中间会经过Downloader Middlewares的过滤
  5. 这个请求通过下载器下载完成后,生成一个相应对象(response),这个对象将被返回给Engine,中间需要经过一次Downloader Middlewares。
  6. Engine接受到对象之后,发送给爬虫,中间会经过一系列的Spider Middlewares。
  7. 在爬虫中执行相应的自定义逻辑。执行完逻辑之后,爬虫执行相应的回调方法,处理得到的数据或者新的request请求。将这个结果发送给Engine,中间经过一系列Spider Middlewares
  8. Engine得到返回值,若是requests则再执行2, 若是对象则交由Pipeline处理
  9. 从1开始重复,直到调度器中没有新的请求。

 

参考: Scrapy源码阅读分析<一>

跟着大佬走了一遍,还是似懂非懂,但是受益匪浅。

自己修为还差得远..再走几遍再走几遍

以上是关于scrapy流程大致分析的主要内容,如果未能解决你的问题,请参考以下文章

爬虫2.1-scrapy框架-两种爬虫对比

用一个非常简单的项目来了解Scrapy完成一遍抓取流程

用一个非常简单的项目来了解Scrapy完成一遍抓取流程

scrapy 学习之路

scrapy 学习之路

Scrapy爬虫框架