前言:
此时各位老铁们对“scrapy增量式爬虫”都比较重视,咱们都想要了解一些“scrapy增量式爬虫”的相关资讯。那么小编也在网上网罗了一些对于“scrapy增量式爬虫””的相关内容,希望朋友们能喜欢,看官们快快来了解一下吧!#头条创作挑战赛#
Scrapy是基于Python的一个快速、高层次的屏幕抓取的web抓取框架,它是一个非常好的 Python 爬虫框架,功能强大,包含了各种中间件接口,可以灵活的完成各种需求。有了它就可以快速编写出一个爬虫项目,可以用 IP 代理池进行多线程地爬取,可以搭建分布式架构。Scrapy 使用了 Twisted 异步网络框架来处理网络通信,可以加快下载速度。下图显示了 Scrapy 架构及其组件,以及发生在系统内部的数据流的概要(由箭头显示)。
引擎(Engine)控制 Scrapy 中的数据流说明:
(1)爬虫程序(Spiders)的 yeild 将初始请求(request)发送给引擎(Engine)。
(2)引擎(Engine)对请求(requests)不做任何处理发送给 URL 调度器(Scheduler)。
(3)URL 调度器(Scheduler)生成请求(requests)交给引擎(Engine)。
(4)引擎(Engine)拿到请求(requests),通过中间件(Middleware)进行层层过滤发送给下
载器(Downloader)。
(5)下载器(Downloader)在互联网上获取到响应(response)的数据之后,又经过中间
件(Middleware)进行层层过滤发送给引擎(Engine)。
(6)引擎(Engine)获取到响应(response)的数据之后,返回给爬虫程序(Spiders),爬虫程
序(Spiders)的 parse() 方法对获取到的响应(response)的数据进行处理,解析出条目(items)或
新的请求(requests)。
(7)将解析出来的条目(items)或新的请求(requests)发送给引擎(Engine)。
(8)引擎(Engine)获取到条目(items)或新的请求(requests),将条目(items)发送给条目
管道(ItemPipelines),将新的请求(requests)发送给 URL 调度器(Scheduler)。
(9)该过程重复 [ 从步骤(1)开始 ],直到没有来自调度程序的更多请求。
Scrapy 组件说明:
(1)Scrapy 引擎(Scrapy Engine):负责爬虫、条目管道、下载器、调度器之间的通信,信号、
数据传递等。
(2)爬虫(Spiders):负责处理所有responses,从中分析提取数据,获取item字段需要的数据,
并将需要跟进的 URL 提交给引擎,再次进入调度器(Scheduler)。
(3)调度器(Scheduler):负责接收引擎发送过来的 request 请求,并按照一定的方式进行整
理排列,放入队列中,当引擎需要时,交还给引擎。
(4)条目管道(ItemPipeline):负责处理爬虫获取到的 item,并进行后期处理(详细分析、
过滤、存储等)的地方。
(5)下载中间件(Downloader Middlewares):介于 Scrapy 引擎和下载器之间的中间件,主要
是处理 Scrapy 引擎与下载器之间的请求及响应。
(6)下载器(Downloader):负责下载引擎发送的所有 requests 请 求,并将其获取到的
responses 交还给引擎,由引擎交给爬虫来处理。
(7)Spider 中间件(Spider Middlewares):介于 Scrapy 引擎和爬虫之间的中间件,主要工作
是处理爬虫的响应输入和请求输出。
(8)调度中间件(Scheduler Middlewares):介于 Scrapy 引擎和调度之间的中间件,从 Scrapy
引擎发送到调度的请求和响应。
标签: #scrapy增量式爬虫