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标准日志模块logging的使用方法
Nov 01 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
Python编程argparse入门浅析
Feb 07 Python
Python面向对象之类和对象实例详解
Dec 10 Python
Python初学者常见错误详解
Jul 02 Python
python实现最小二乘法线性拟合
Jul 19 Python
python 模拟银行转账功能过程详解
Aug 06 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
python应用文件读取与登录注册功能
Sep 23 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
如何用Django处理gzip数据流
Jan 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 Document 代码注释规范
2009/04/13 PHP
php数据库抽象层 PDO
2011/05/07 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP目录操作实例总结
2016/09/27 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
vue组件name的作用小结
2018/05/23 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
Python中的Matplotlib模块入门教程
2015/04/15 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
学python爬虫能做什么
2020/07/29 Python
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
采购员岗位职责
2013/11/15 职场文书
致800米运动员广播稿
2014/02/16 职场文书
2014信息公开实施方案
2014/02/22 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
三方协议书
2015/01/27 职场文书
满月酒邀请函
2015/01/30 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang