【青鸟飞扬教育】使用python结合redis编写分布式爬虫
所谓分布式,体现在生产端和消费端的隔离,同一端的worker彼此间也是隔离的。生产端和消费端隔离,他们就可以独自进行变化,增加或是减少worker;同一端的worker彼此间也是隔离的,这样,一个worker崩溃了,其他worker不受其影响仍然可以继续工作。
实现分布式爬取的关键是消息队列,这个问题以消费端为视角更容易理解。你的爬虫程序部署到很多台机器上,球速体育welcome那么他们怎么知道自己要爬什么呢?总要有一个地方存储了他们需要爬取的url吧,这样他们才能工作。
假设有1万个url需要爬取,而你有100个爬虫程序部署在10台机器上,每台10个爬虫程序在运行,一个url被分给爬虫程序后,其他爬虫不能再获得这个url,不然,就重复爬取了,理解吧,分布式爬虫的关键是怎么把任务分给这些爬虫。
有些促销活动的现场会进行抽奖活动,工作人员捧着一个透明的箱子,参与活动的人从箱子的小口处把手伸进去随机拿出一张折叠的纸条,这种模式与消息队列十分相似。消息队列就好比这个抽奖的箱子,消费端的爬虫程序就好比参与活动的顾客,爬虫从消息队列里拿出一个url任务,然后进行爬取,不同于抽奖活动时一个人只能拿一次,分布式爬虫允许爬虫在结束一个爬虫任务后继续从消息队列里获取任务。
如果你只是简单的写一个分布式爬虫,那么使用redis的队列就可以了,它完全可以作为消息队列来使用,下面的代码是生产端的代码示例
我这里只是做示例演示,真实的生产环境下比这要复杂的多,但核心不变,都要用lpush方法将需要爬取的任务信息写入到指定队列中,写入后,这些信息就等待爬虫程序从队列里获取,下面的代码是消费端爬虫程序的示例
爬虫程序要不停的使用rpop方法从redis的队列中拉取数据进行爬取,考虑到生产者随时都可能写入新的任务,因此,必须使用死循环,得不到消息时,sleep一段时间,继续获取消息。
生产端的程序,消费端的程序可以随意部署,但不管如何,都要确保这些机器与redis所在的机器是网络连通的,因为他们一个要写消息到redis,一个要从redis拉取任务,至于生产端和消费端是否网络连通则没有任何必要,甚至同一端的worker之间也不必网络连通
消费端的worker在爬取数据以后,可以根据实际需要决定是否直接落库,如果需要对数据进行规范化处理或是其他操作,则可以写入新的消息队列中,由下一个工序的worker拉取数据进行处理
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
2024版!多少分可以上川大、电子科大、西交大等?30+所川内大学录取数据汇总
上海市民直呼:乱套了!这群人太离谱,行人突然被撞倒地……执法却遇尴尬?
上海高中生写下断绝父子关系的长信!“他们离婚约定房子给我,爸爸却反悔了...”
独角兽早报 茅台回应“自制假茅台被鉴定为线年前全数沽出英伟达;美的置业进行股权重组
LuX-Valve Plus助力2024 Taipei Valve Summit 同心共行,一路相瓣
自动驾驶公司Momenta完成美股上市备案,通用、上汽、奔驰等参投,自动驾驶行业迎“上市潮”
scout被小奶油单杀!LNG再次不敌TES,教练道歉:我的BP没做好
Surface Laptop 7实测待机表现良好 盖上盖子数小时不掉电
传奇超频玩家KINGPIN离开EVGA加入PNY 开发下一代极致超频GPU
苹果修复影响Vision Pro的漏洞,网站无法再用蝙蝠轰炸用户的房间
您可能感兴趣的文章
- 08-26Redis之父用纯C语言代码实现Telegram Bot框架
- 08-26Redis 通过多线程查询引擎大幅改进语义搜索性能
- 08-26rancher24如何安装redis50
- 08-26Redis缓存异常及解决方案
- 08-25Redis的安全和配置创建服务
- 08-25ChatGPT瘫痪几个小时! 官方回应已修复并通知受影响用户
- 08-25Redis 开源社区持续壮大华为云为 Valkey 项目注入新的活力
- 08-25Redis替换实践丨TongRDS高效助力银行业务系统全面升级
- 08-21Redis 更改开源协议引争议Linux 基金会宣布创建 Valkey 分支“单干”
- 08-21阿里云 Redis 开发规范和运维解法揭秘高性能的关键原来在这!
阅读排行
推荐教程
- 08-21Redis 更改开源协议引争议Linux 基金会宣布创建 Valkey 分支“单干”
- 06-24Redis在Web应用用户数据恢复中的应用教程与构建
- 08-21阿里云 Redis 开发规范和运维解法揭秘高性能的关键原来在这!
- 08-06滴滴“崩溃”一夜有司机“收入超690亿”损失千万订单!
- 06-26实战 打造新平台赋能期货保证金安全存管监控体系高水平发展
- 08-25ChatGPT瘫痪几个小时! 官方回应已修复并通知受影响用户
- 08-21Linux基金会支持Valkey开源分支替代最流行的键值数据库Redis
- 06-26携手Redis 火山引擎推出高性能云原生缓存服务
- 08-25Redis替换实践丨TongRDS高效助力银行业务系统全面升级
- 06-24禁止套娃!Redis官网宕机返回“连接不上Redis”