Scrapy爬虫架构图解
来源:互联网 发布:yum预付卡章程 编辑:程序博客网 时间:2024/06/06 10:56
这就是整个Scrapy的架构图了;Scrapy Engine: 这是引擎,负责Spiders、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等等!(像不像人的身体?)Scheduler(调度器): 它负责接受引擎发送过来的requests请求,并按照一定的方式进行整理排列,入队、并等待Scrapy Engine(引擎)来请求时,交给引擎。Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spiders来处理,Spiders:它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),Item Pipeline:它负责处理Spiders中获取到的Item,并进行处理,比如去重,持久化存储(存数据库,写入文件,总之就是保存数据用的)Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spiders中间‘通信‘的功能组件(比如进入Spiders的Responses;和从Spiders出去的Requests)
数据在整个Scrapy的流向:程序运行的时候,引擎:Hi!Spider, 你要处理哪一个网站?Spiders:我要处理23wx.com引擎:你把第一个需要的处理的URL给我吧。Spiders:给你第一个URL是XXXXXXX.com引擎:Hi!调度器,我这有request你帮我排序入队一下。调度器:好的,正在处理你等一下。引擎:Hi!调度器,把你处理好的request给我,调度器:给你,这是我处理好的request引擎:Hi!下载器,你按照下载中间件的设置帮我下载一下这个request下载器:好的!给你,这是下载好的东西。(如果失败:不好意思,这个request下载失败,然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载。)引擎:Hi!Spiders,这是下载好的东西,并且已经按照Spider中间件处理过了,你处理一下(注意!这儿responses默认是交给def parse这个函数处理的)Spiders:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,这是我需要跟进的URL,将它的responses交给函数 def xxxx(self, responses)处理。还有这是我获取到的Item。引擎:Hi !Item Pipeline 我这儿有个item你帮我处理一下!调度器!这是我需要的URL你帮我处理下。然后从第四步开始循环,直到获取到你需要的信息,注意!只有当调度器中不存在任何request了,整个程序才会停止,(也就是说,对于下载失败的URL,Scrapy会重新下载。)以上就是Scrapy整个流程了。
阅读全文
0 0
- Scrapy爬虫架构图解
- Scrapy爬虫(三):scrapy架构及原理
- pyhton爬虫Scrapy架构分析
- Python爬虫抓取框架:Scrapy的架构
- scrapy爬虫架构介绍和初试
- Python网络爬虫2 ---- scrapy爬虫架构介绍和初试
- scrapy爬虫
- Scrapy 爬虫
- scrapy爬虫
- 爬虫-scrapy
- Python开源爬虫框架:Scrapy架构分析
- Python开源爬虫框架:Scrapy架构分析
- 爬虫笔记(10/9)-------scrapy核心架构
- 架构师之路:Python分布式爬虫Scrapy打造搜索引擎
- scrapy架构
- 【网络爬虫】【python】网络爬虫(四):scrapy爬虫框架(架构、win/linux安装、文件结构)
- Scrapy爬虫(二):爬虫简介
- Scrapy-CrawlSpider爬虫组件
- Redis GEO 特性
- c++ vertor容器
- 单例模式(Singleton)(对象创建型模式)
- 学习篇JAVA之接口和抽象类
- 集成支付宝 报错:rsa_private read error : private key is NULL
- Scrapy爬虫架构图解
- Kotlin教程学习-字符串拼接,数组,List
- Hexo+github搭建个人博客(1)
- onNewIntent使用遇到的坑
- git入门(一)
- Learning with local and global consistency阅读报告NIPS2003
- 信息安全
- 数据库编程时需要注意的两点!
- 第三方JS库