scrapy爬虫原理以及抓取流程介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scrapy爬虫原理以及抓取流程
不少接触爬虫的人都应该听说过Scrapy,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
作为一种爬虫语言,Scrapy有什么特点呢?
首先,Scrapy 使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
其次,Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
Scrapy 使用了Twisted'twɪstɪd异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。
那么,scrapy爬虫原理是什么呢?
先放上Scrapy的原理图:
如上图所示,绿色的箭头表示的是数据的流动方向。
通过看上面的示意图,我们可以看出最主要的核心部件是Scrapy Engine,;另外还有Scheduler + Downlodaer + Spiders + Item Pipeline 四个功能部件,除此之外还有自己配置的Downloader Middleware+Spider Middleware两个可自由配置的拓展中间件。
1.Scrapy Engine
这是Scrapy的爬虫核心,主要负责控制系统各个部件之间的data flow,以及当特定事件发生的时候触发event。
2.Scheduler
接受engine发来的requests放入队列中,当engine要求的时候再提供给engine。3.Downloader
负责拉取下载page并返给engine,engine之后再传递给Spiders
4.Spider
用户自行编写的代码类,这部分的用户代码主要完成解析response并提取item,或者是跟进页面中获取的额外的link url。
5、Item Pipeline
负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
6、Downloader Middlewares
位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应
7、Spider Middlewares
介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。
8、Scheduler Middewares
介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。
它的运行流程一般是这样子的:
1、引擎从调度器中取出一个链接(URL)用于接下来的抓取
2、引擎把URL封装成一个请求(Request)传给下载器
3、下载器把资源下载下来,并封装成应答包(Response)
4、爬虫解析Response
5、解析出实体(Item),则交给实体管道进行进一步的处理
6、解析出的是链接(URL),则把URL交给调度器等待抓取
。