博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用redis中列表数据类型构建共享消息队列
阅读量:4310 次
发布时间:2019-06-06

本文共 873 字,大约阅读时间需要 2 分钟。

为了应对大规模爬虫,可食用分布式爬虫技术,分布式爬虫技术中有一项技术必须解决:多态主机共同爬取大量url地址,如何剔除或者识别已爬取的url,为了解决这项技术问题,可以借助redis中列表数据类型,实现url的存储,然后通过一台主机负责爬取url,其他主机负责请求redis数据库中保存的url,具体代码如下:

'''负责产生url地址'''import redisimport randomimport timer = redis.Redis(host='127.0.0.1', port=6379, db=0, password=123456)# 生成很多URL地址,放到redis列表中for i in range(1, 51):    url = 'http://app.mi.com/#page=' + str(i)    # 放入到redis列表    r.lpush('xiaomi:urls', url)    # 随机休眠3~5秒    time.sleep(random.randint(3, 5))==================================================='''从xiaomi:urls中获取地址,进行数据抓取'''import redisr = redis.Redis(host='127.0.0.1', port=6379, db=0, password=123456)while True:    # 从列表中获取地址,结果为元组,或者None    url = r.brpop('xiaomi:urls', 6)    print(url)    if url:        print(url[1].decode())        print('正在抓取.....')    else:        print('抓取结束')        break

 

转载于:https://www.cnblogs.com/yuxiangyang/p/11190678.html

你可能感兴趣的文章
eclipse 创建的Android工程的结构
查看>>
第8章 Android异常与性能优化相关面试问题
查看>>
linux 定时备份文件夹
查看>>
有道单词导入 大量有道单词 生词本 批量导入 添加 有道单词XML 背单词
查看>>
jQuery Easing动画效果扩展插件
查看>>
bzoj 1002 [FJOI2007]轮状病毒 Matrix-Tree定理+递推
查看>>
Selenium WebDriver- 操作JavaScript的Alert弹窗
查看>>
娘的,自己的求逆序对模板又不好使了。。。。。。。。
查看>>
C#面向对象模式设计第十四讲:Template Method 模板模式(行为型模式)
查看>>
linux后台运行命令:&和nohup
查看>>
springboot + shiro学习(配置SecurityManager,Realm)
查看>>
http://desk.zol.com.cn/1600x900/
查看>>
Linux基础之命令练习Day3-文件管理:cat,tar,gzip,vim,ln
查看>>
iOS中使用nil NULL NSNULL的区别
查看>>
Hdu1754-线段树-单点更新
查看>>
在python中使用正则表达式(一)
查看>>
asp.net mvc 4.0的部署
查看>>
WordPress资源站点推荐
查看>>
Python性能鸡汤
查看>>
android Manifest.xml选项
查看>>