python分布式爬虫中消息队列知识点详解


Posted in Python onNovember 26, 2020

当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方。那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的资源,当然这个是一定的次序的,不然数据获取就会出现重复。就下来我们就python分布式爬虫中的消息队列进行详细解释,小伙伴们可以进一步了解一下。

实现分布式爬取的关键是消息队列,这个问题以消费端为视角更容易理解。你的爬虫程序部署到很多台机器上,那么他们怎么知道自己要爬什么呢?总要有一个地方存储了他们需要爬取的url吧,这样他们才能工作。

假设有1万个url需要爬取,而你有100个爬虫程序部署在10台机器上,每台10个爬虫程序在运行,一个url被分给爬虫程序后,其他爬虫不能再获得这个url,不然,就重复爬取了,理解吧,分布式爬虫的关键是怎么把任务分给这些爬虫。

有些促销活动的现场会进行抽奖活动,工作人员捧着一个透明的箱子,参与活动的人从箱子的小口处把手伸进去随机拿出一张折叠的纸条,这种模式与消息队列十分相似。消息队列就好比这个抽奖的箱子,消费端的爬虫程序就好比参与活动的顾客,爬虫从消息队列里拿出一个url任务,然后进行爬取,不同于抽奖活动时一个人只能拿一次,分布式爬虫允许爬虫在结束一个爬虫任务后继续从消息队列里获取任务。

使用redis的队列做消息队列

如果你只是简单的写一个分布式爬虫,那么使用redis的队列就可以了,它完全可以作为消息队列来使用,下面的代码是生产端的代码示例

import redis
r = redis.Redis(host='127.0.0.1', port=6379,
        password='yourpassword', db=1)
# 生产10个url任务
for i in range(10):
  r.lpush('url_queue', i)

相信看完以上的代码示例后,小伙伴们已经学会用redis创造一个消息队列,用来方便爬虫的获取数据。本篇是以生产段的角度写的代码

到此这篇关于python分布式爬虫中消息队列知识点详解的文章就介绍到这了,更多相关python分布式爬虫中的消息队列是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用python分割TXT文件成4K的TXT文件
May 23 Python
Python中多线程及程序锁浅析
Jan 21 Python
python简单判断序列是否为空的方法
Jun 30 Python
Python实现的rsa加密算法详解
Jan 24 Python
python截取两个单词之间的内容方法
Dec 25 Python
详解Python 切片语法
Jun 10 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
python 变量初始化空列表的例子
Nov 28 Python
python 多维高斯分布数据生成方式
Dec 09 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
matplotlib阶梯图的实现(step())
Mar 02 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 #Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 #Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 #Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 #Python
Django celery异步任务实现代码示例
Nov 26 #Python
Django通过设置CORS解决跨域问题
Nov 26 #Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 #Python
You might like
索尼ICF-SW100收音机评测
2021/03/02 无线电
使用PHP Socket写的POP3类
2013/10/30 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php错误日志简单配置方法
2016/07/11 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
javascript cookies操作集合
2010/04/12 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python扩展内置类型详解
2018/03/26 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
自荐信如何制作?
2014/02/21 职场文书
高中班主任评语大全
2014/04/25 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书