redis是一个key-value存储结构。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)和hash(哈希类型),数据存储如下图分析
为了分别为ID存入多个键值对,此次仅对Hash数据进行操作,例子如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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数据结构是列表时:
以上这篇Python 抓取数据存储到Redis中的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/lovele-/p/9800202.html