爬虫框架--Scrapy学习笔记一

来源:互联网 发布:hive sql minus用法 编辑:程序博客网 时间:2024/06/08 18:28

前言:学习爬虫的道路上,随着慢慢的深入,不可避免的会接触到各种各样的开源框架,而Scrapy是在网络上随处可见的一个框架了,也是爬虫新手最开始接手的一个框架,博主在学习的学习爬虫的过程中也开始接触,并学习该框架。特将学习笔记与理解记录下来。
##Scrapy框架流程图
Scrapy框架图
在一开始接触Scrapy,上图应该是我们在网上能看到的最多的一张图片了。这张图片是官方文档给带的一张Scarpy框架图。

主要包括主要组件:

拉货的老司机(Scrapy_Engine):

用来处理整个系统的数据流,触发核心事务。承担重要的物流运输任务,将各个成员处理的结果运输到下一站。(嘟嘟嘟,老司机开车了)

任务派遣员(Scheduler):

用来接受Engine发过来的请求,压入队列,并在引擎再次请求的时候返回。所有的url都是由Scheduler决定的,决定下一个链接爬取的派遣员。(ps:也负责对数据去重)

钛金狗眼(Downloader):

所见即所要。Downloader担负着下载任务,将它看到的url内容全部下载下来(就像一个会自动拍照的眼睛,将所有能看到的东西都拍下来),返回给Spyder。

捡垃圾的大叔(Spiders):

从Downloader下载下来的内容中挑挑捡捡,得到我们想要的信息(Item)。

清洁阿姨(Pipeline) :

负责处理清洗Spiders爬取出来的Items。主要功能有,持久化item,验证实体的有效性,清除不需要的信息。经过清洁阿姨的一番处理包装过后,就得到最终的成品。

四大天王的秘密装备:

钛金狗眼的各类照相机(Downloader_Middlewares):

所有能让Downloader下载下来url的配置信息都放在Downloader_Middlewares中。比如添加请求头,添加代理等等。钛金狗眼想把它看到的所有信息都拍下来是不容易的。首先把照相机不被别人发现的带进场地就是一个非常非常困难的问题。(ps:被发现了,会被拒之门外。别说拍照了,连看一眼的机会都不给你)这时候就要靠各种各样的装备了。只要在进场前让钛金狗眼配备上一款照相机,被发现了,就换一个照相机,又被发现了,我再换,总有一款你没见过的,可以被我带进去的照相机(ps:各类照相机在这里指代配置信息)。

大叔的高效垃圾分类器(Spider_Middlewares):

位于Engine与Spider之间的框架。用来处理Spider的相应输入(response)与输出(items和requests)。将老司机带来的结果先经过垃圾分类器处理后,有价值的items让老司机带给清洁阿姨,有关下一个url地址(requests)让老司机带给任务派遣员。

老司机发送给派遣员的邮件(Scheduler_Middlewares):

介于Engin与Scheduler 之间的中间件,记录Engine发送给Scheduler的所有请求和相应。这份邮件中记录了大叔捡到的所有url地址,好的坏的都在上面(ps:捡垃圾的大叔不识字,无法分辨出来哪个是有用的,哪个是没用的,请体谅下0.0)。派遣员从这份邮件中挑选出有用的url,排在自己的任务安排表里,让老司机带给钛金狗眼。(ps:派遣员是高学历的文化人)

老司机的日常

不可否认老司机是个幸福的人。有个老婆-清洁大妈,养了条宠物-钛金狗眼,有个老板-高学历的派遣员,还有个马仔-捡垃圾的大叔。每次有任务,老司机都开着他那辆破车,载着一车的Requests,Responses,items穿梭在工作,训小弟,逗老婆,遛狗中。祝老司机更幸福!!!

参考链接

[1]http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/spider-middleware.html
[2]http://www.cnblogs.com/tester-l/p/6064212.html
[3]http://www.codes51.com/itwd/3924781.html
[4]http://www.jianshu.com/p/a8aad3bf4dc4
[5]http://www.cnblogs.com/wzjbg/p/6507581.html