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