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实现simhash算法实例
Apr 25 Python
Python语言的12个基础知识点小结
Jul 10 Python
详解Python中内置的NotImplemented类型的用法
Mar 31 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
Python中format()格式输出全解
Apr 12 Python
python aiohttp的使用详解
Jun 20 Python
python中对数据进行各种排序的方法
Jul 02 Python
pandas的相关系数与协方差实例
Dec 27 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
python数据处理之Pandas类型转换
Apr 28 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中防止SQL注入的最佳解决方法
2013/04/25 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
Python 含参构造函数实例详解
2017/05/25 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
python实现猜数字游戏
2020/03/25 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
css3 transform属性详解
2014/09/30 HTML / CSS
JAVA中的关键字有什么特点
2014/03/07 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
应届中专生自荐书范文
2014/02/13 职场文书
2016七夕情人节感言
2015/12/09 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript