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转换摩斯密码示例
Feb 16 Python
python中使用OpenCV进行人脸检测的例子
Apr 18 Python
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
Python中subprocess模块用法实例详解
May 20 Python
python实现数据写入excel表格
Mar 25 Python
Tensorflow卷积神经网络实例
May 24 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
python爬虫爬取某网站视频的示例代码
Feb 20 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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
php header Content-Type类型小结
2011/07/03 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP多文件上传实例
2015/07/09 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
犀利的js 函数集合
2009/06/11 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
python集合的新增元素方法整理
2020/12/07 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
Java如何调用外部Exe程序
2015/07/04 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
大学毕业登记表自我鉴定
2013/10/09 职场文书
护士的岗位职责
2013/12/04 职场文书
采购内勤岗位职责
2013/12/10 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
个人安全生产承诺书
2014/05/22 职场文书
单位租车协议书
2015/01/29 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技