前言
- 在了解scrapy的5大核心组件之前,我们要吃一点饭前甜点.
- 我们知道scrapy是一个框架,之于框架,就是集成了很多功能,并且通用性很强的一个项目模板
- 而scrapy,就是爬虫中的明星框架,scrapy的优势在于高性能的储存,异步下载,高性能的数据解析,并且其可以实现分布式爬虫
- 最后,看本文的时候应对scrapy有一个粗浅的认识,起码建过一个工程.
简介
1.spider
- 在创建出scrapy工程的时候,我们很容易看到工程目录下有一个spider的目录,这是我们可以看到的与spider有关的东西
- 事实上,spider就是框架中干活的打工人.我们让这个打工人解析页面的数据,供其它的组件使用.
2.调度器
- 调度器里又包含了过滤器和队列.
- 过滤器就是用来过滤掉spider提供的url,避免重复
- 队列就是用来储存一系列待请求的url
3.管道
- 了解管道之前,我们首先要知道,scrapy中有一个叫item的东西,他是spider解析的一系列数据,最终数据要转化为item,再输送给管道进行存储,可以理解为一个购物的流程:
spider把你需要的数据打包(你买东西快递给你打包),
之后送给管道(各种运输方式将你的包裹送过来),最后管道进行持久化存储(你收到了快递,拆包,各种使用…)
4.下载器
- 下载器顾名思义,就是用来下载网页数据的,下载之后的数据会送给spider继续处理
5.引擎
- 引擎是组件的心脏. 负责整个系统的数据流处理, 触发事务.怎么理解呢?
- 玩过scrapy我们知道,再对应的工程文件中有很多的类,我们知道要对类实例化,才能使用类中相关的方法,而我们编写的时候只是编写的类对吧,那么谁负责去实例化呢?谁去处理爬虫对应步骤怎么走呢?就是我们的引擎大哥了.
组件之间协调
- 组件之间的协调的核心就是引擎.而在这个心中的血液就是数据流.引擎会根据不同组件提供的数据来触发相应的事物.
- 譬如,spider要提交一个url给调度器,首先引擎就实例化了spider中的类,执行了一些方法
END
希望大家能有所收获,并给一个赞!