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嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python机器学习之神经网络(二)
Dec 20 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
Python any()函数的使用方法
Oct 28 Python
pytorch 求网络模型参数实例
Dec 30 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
python eventlet绿化和patch原理
Nov 21 Python
Python pygame实现中国象棋单机版源码
Jun 20 Python
Python之基础函数案例详解
Aug 30 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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php教程之phpize使用方法
2014/02/12 PHP
jQuery.holdReady()使用方法
2014/05/20 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
js数据类型检测总结
2018/08/05 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
python发腾讯微博代码分享
2014/01/10 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python让列表倒序输出的实例
2018/06/25 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
Python 自由定制表格的实现示例
2020/03/20 Python
Python super()方法原理详解
2020/03/31 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
综合实践活动方案
2014/02/14 职场文书
初中家长评语大全
2014/12/26 职场文书
老干部座谈会主持词
2015/07/03 职场文书
领导干部学习心得体会
2016/01/23 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript