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实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
谈谈如何手动释放Python的内存
Dec 17 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
python 2.7.14安装图文教程
Apr 08 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
python flask中动态URL规则详解
Nov 22 Python
python机器学习库xgboost的使用
Jan 20 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
如何基于Python Matplotlib实现网格动画
Jul 20 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
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
django解决跨域请求的问题
2018/11/11 Python
Python函数返回不定数量的值方法
2019/01/22 Python
Python基础之文件读取的讲解
2019/02/16 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
营业员个人总结的自我评价
2013/10/25 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
满月酒答谢词
2014/01/14 职场文书
体育活动总结范文
2014/05/04 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
先进工作者申报材料
2014/12/23 职场文书
鸦片战争观后感
2015/06/09 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python