Python 抓取数据存储到Redis中的操作


Posted in Python onJuly 16, 2020

redis是一个key-value存储结构。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)和hash(哈希类型),数据存储如下图分析

Python 抓取数据存储到Redis中的操作

为了分别为ID存入多个键值对,此次仅对Hash数据进行操作,例子如下

import os,sys
import requests
import bs4
import redis

#连接Redis
r = redis.Redis(host='127.0.0.1',password='123456',port=6379)

html = 'https://www.dongmanmanhua.cn/dailySchedule?weekday=MONDAY'
result = requests.get(html)
texts = result.text

data = bs4.BeautifulSoup(texts,'html.parser');
lidata = data.select('div#dailyList ul.daily_card li')
#print(lidata)

for x in lidata:
 did = x.get('data-title-no')
 name = x.select('p.subj')
 name1 = name[0].get_text()
 url = x.a.get('href')
 story = x.a.p
 story1 = story.string
 user = x.select('p.author')
 user1 = user[0].get_text()
 like = x.select('em.grade_num')
 like1 = like[0].get_text()

 rt = {'did':did,'name':name1,'url':url,'story':story1,'user':user1,'like':like1}

 #写数据到Redis
 idkey = 'name'+did
 #hash表数据写入命令hmget,可以一次写入多个键值对
 r.hmget(idkey,rt)
  
 #写入命令hset,一次只能写入一个键值对
 r.hset(idkey,'did',did)
 r.hset(idkey,'name',name1)
 r.hset(idkey,'story',story1)
 r.hset(idkey,'url',url)
 r.hset(idkey,'user',user1)
 r.hset(idkey,'like',like1)
 print('dman哈希表写入成功')
 print(r.hget(idkey,'did'))
 print(r.hget(idkey,'name'))

Hash 类其他常用操作

hset(name,key,value) :name对应的hash中设置一个键值对,当name对应的hash中不存在当前key则创建(相当于添加) ,否则做更改操作

hget(name,key) : 在name对应的hash中获取根据key获取value

hmset(name,mapping) :在name对应的hash中批量设置键值对 ,mapping:例 {'k1':'v1','k2':'v2'}

hmget(name,keys,*args) :在name对应的hash中获取多个key的值 ,keys:要获取key的集合,例 ['k1','k2'];*args:要获取的key,如:k1,k2,k3

hgetall(name):获取name对应hash的所有键值

hlen(name):获取name对应的hash中键值的个数

hkeys(name):获取name对应的hash中所有的key的值

hvals(name):获取name对应的hash中所有的value的值

hexists(name,key):检查name对应的hash是否存在当前传入的key

hdel(name,*keys):将name对应的hash中指定key的键值对删除

补充知识:将python数据存入redis中,键取字符串类型

使用redis中的字符串类型键来存储一个python的字典。首先需要使用json模块的dumps方法将python字典转换为字符串,然后存入redis,从redis中取出来必须使用json.loads方法转换为python的字典(其他python数据结构处理方式也一样)。

如果不使用json.loads方法转换则会发现从redis中取出的数据的数据类型是bytes.

Python 抓取数据存储到Redis中的操作

当使用的python数据结构是列表时:

Python 抓取数据存储到Redis中的操作

以上这篇Python 抓取数据存储到Redis中的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python读写文件操作示例程序
Dec 02 Python
Python去掉字符串中空格的方法
Mar 11 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
深入理解Django-Signals信号量
Feb 19 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
python多次执行绘制条形图
Apr 20 Python
详解OpenCV曝光融合
Apr 29 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 #Python
解决python对齐错误的方法
Jul 16 #Python
Python爬虫实例——爬取美团美食数据
Jul 15 #Python
django Model层常用验证器及自定义验证器详解
Jul 15 #Python
浅谈Django前端后端值传递问题
Jul 15 #Python
浅谈python出错时traceback的解读
Jul 15 #Python
Django视图、传参和forms验证操作
Jul 15 #Python
You might like
PHP strtr() 函数使用说明
2008/11/21 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
javascript History对象原理解析
2020/02/17 Javascript
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
Python中的asyncio代码详解
2019/06/10 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
python如何删除文件、目录
2020/06/23 Python
C面试题
2015/10/08 面试题
经典c++面试题三
2015/07/08 面试题
西安当代医院管理研究院笔试题
2015/12/11 面试题
指导教师评语
2014/04/26 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
浅谈MySQL中的六种日志
2022/03/23 MySQL
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js