前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy进阶之Scrapy的架构

Scrapy进阶之Scrapy的架构

作者头像
钱塘小甲子
发布2019-01-29 09:39:22
4870
发布2019-01-29 09:39:22
举报

      Scrapy是一个python的爬虫架构,但是这个架构的工作原理是怎么的呢?也就是说,Scrapy的框架是怎么样的。网上已经有很多博文说这个框架了,但是我想用另外一种方法来讲述。

      话说有一天,我想写一个爬虫。爬虫,说白了就是去互联网上下载东西,然后提取下载下来的页面中有用的字段。这件事怎么说也是一个工程吧,作为一个工程师,好吧,就是一个码农,你的模块化思想应该体现出来了。

下载东西提取页面中需要的字段就是两个模块了。我们命名为Downloader和Dealer。

        提取出来东西了,我们得考虑怎么存储吧,所以我们再引入一个模块,用来后续加工。加工数据流就像是数据流通过管道一样,所以,我们把这个对数据做后期存储、验证的模块叫做Pipline。

        我们的框架建立好了,爬虫开始出发了!

        爬虫很开心,但是,不一会儿,爬虫就不知道该往哪里去了,因为爬了一个网页后,没有人告诉这个爬虫下一步应该去哪里。我们的Dealer模块是可以提取“下一页”这样的链接的,但是他并没有安排给爬虫去进行下一次爬取的任务。所以,我们需要一个调度系统,Dealer模块一有“下一页”就把网页地址给这个调度器,调度器再去安排给Downloader去下载。这个调度器模块我们就叫做Scheduler。

        最后,这四个模块需要协调工作,所以我们再设立一个用来统领的模块,叫做Engine。

        铛铛铛铛,这是scrapy官方的框架图,如果把我们自己意淫出来的模块中的Dealer改成Spider,两个框架就一样了!

        Scrapy和我们之前想的一样哦!这里的Downloader Middleware和Spider Middleware就是数据传输的中间件,把他们当做管道就可以了,只不过我们可以在这两个管道里面做点小动作罢了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年06月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档