scrapy是一个爬虫框架,官方说明文件参考:https://doc.scrapy.org/en/master/topics/architecture.html
自己配置scrapy的用户会了解到scrapy是基于Twisted配置的,scrapy使用Twisted这个异步网络库来处理网络通讯。scrapy对同一域名允许最多8个并发下载,每2次下载之间没有延时,所以很容易被检测到遭封禁。scrapy配置参考http://blog.csdn.net/cymy001/article/details/78220367
scrapy框架内数据流向:
1.)从初始URL开始,Scheduler会将其交给Downloader进行下载
2.)下载之后会交给Spider进行分析
3.)Spider分析出来的结果有两种:一种是需要进一步抓取的链接,如“下一页”的链接,它们会被传回Scheduler;另一种是需要保存的数据,它们被送到Item Pipeline里,进行后期处理(详细分析、过滤、存储等)。
4.)在数据流动的通道里还可以安装各种中间件,进行必要的处理。
scrapy框架各部分作用:
(1.)引擎(Scrapy Engine),处理整个系统的数据流,触发事务。
(2.)调度器(Scheduler),接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
(3.)下载器(Downloader),下载网页内容,并将网页内容返回给蜘蛛。
(4.)蜘蛛(Spiders),主要干活的部件,制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。
(5.)项目管道(Item Pipeline),负责处理有蜘蛛从网页中抽取的项目,主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
(6.)下载器中间件(Downloader Middlewares),位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
(7.)蜘蛛中间件(Spider Middlewares),介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。
(8.)调度中间件(Scheduler Middlewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。