栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

rpop方法如何在python分布式爬虫中使用?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

rpop方法如何在python分布式爬虫中使用?

我们在上篇文章中以生产的角度分析了爬虫的消息队列,但就拿我们现实中的商品流通而言,有新的商品生产,就有新的商品在市面上流通,我们的爬虫也是如此。前期获取的数据存储在消息列表,然后爬虫需要把数据从消息列表中搬走,这就是站在了消费的角度。在这个过程中我们需要使用到rpop方法,接下来小编就带大家看看其在python分布式爬虫中的使用。


下面的代码是消费端爬虫程序的示例

import time
import redis
 
 
r = redis.Redis(host='127.0.0.1', port=6379,
                password='yourpassword', db=1)
 
# 爬虫程序
def crawl(task):
    print('爬取url {task}'.format(task=task))
    time.sleep(1)
 
 
while True:
    task = r.rpop('url_queue')
    if not task:
        time.sleep(1)
        continue
 
crawl(task)

爬虫程序要不停的使用rpop方法从redis的队列中拉取数据进行爬取,考虑到生产者随时都可能写入新的任务,因此,必须使用死循环,得不到消息时,sleep一段时间,继续获取消息。

 

关于部署

生产端的程序,消费端的程序可以随意部署,但不管如何,都要确保这些机器与redis所在的机器是网络连通的,因为他们一个要写消息到redis,一个要从redis拉取任务,至于生产端和消费端是否网络连通则没有任何必要,甚至同一端的worker之间也不必网络连通

 

数据存储

消费端的worker在爬取数据以后,可以根据实际需要决定是否直接落库,如果需要对数据进行规范化处理或是其他操作,则可以写入新的消息队列中,由下一个工序的worker拉取数据进行处理

有了类似消息列表的这个盒子,爬虫需要获取的数据就可以暂时放在其中和搬运出来,这也就是整个分布式爬虫获取数据的过程。更多Python学习指路:PyThon学习网教学中心。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/11689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号