将redis中数据保存到MongoDB

# 数据的持久化操作redis---->MongoDB
import redis
from pymongo import MongoClient
import json

# 爬虫实现简单分布式:多个url放到列表里,往里不停放URL,程序循环取值,
# 可以把url放到redis中,多台机器从redis中取值,爬取数据,实现简单分布式

# 实例化redis客户端
redis_client = redis.Redis(host='127.0.0.1',port=6379)

# 实例化MongoDB客户端
mongo_client = MongoClient(host='127.0.0.1',port=27017)

# 指定链接的MongDB数据库、集合
db = mongo_client['HN']
col = db['HN']
# 使用循环把redis中数据全部写入到MongoDB中
while True:
# 从redis中取出数据
#blpop中出参数就是redis中的key-value的名为value的列表的名称,
# 系统默认生成的与爬虫文件名类似的名称,形如=>(爬虫名:items)
key,data = redis_client.blpop(['hn_spider:items'])
print('key', key)
print('data',data)
#json.loads()函数是将json格式数据转换为字典
# 把数据写入到MongoDB中
col.insert_one(json.loads(data.decode()))


# 关闭数据库
mongo_client.close()
posted @ 2019-10-20 00:33  拷贝达人  阅读(2000)  评论(0编辑  收藏  举报