Scrapy异步框架

同步:下一个方法依赖于上一个方法的结果
异步:下一个方法不依赖上一个方法的结果

同步:
Urlopen(url1).read() 访问/响应 服务器
Urlopen(url2).read() 访问/响应 服务器
问题:同步请求等待响应耗费很多时间
解决思路:多线程Threading,多进程Process

异步:Scrapy框架(解决了同步请求等待响应耗费的时间)比Threading,Process好

Scrapy框架,异步爬虫:

Scheduler调度器:有指纹去重的功能,整合URL队列发送给Downloader

Downloader下载器:接收到Requests对象之后向服务器发送请求,拿到响应Responses交给Spiders 代码:response = urlopen(url2).read()

Spiders爬虫文件:对response进行处理,比如把response写入本地文件

Item Pipeline管道文件:仅仅做一些IO持久化操作,写入本地文件

Downloader Middlewares:
Scheduler调度器里拿出来的请求Resquests经过下载器中间件进行封装,封装之后再交给Downloader,封装内容Header,User-Agent,代理IP
Downloader下载器拿到的Responses经过下载器中间件对Responses进行封装,再交给Spiders

Spiders Middlewares:爬虫将请求Resquests交给调度器Scheduler的时候需要经过的中间件,对Resquests对象做一些封装

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。