Python 抓取数据存储到Redis中

本文详细介绍使用Python操作Redis哈希类型数据的方法,包括连接Redis、读取网页内容、解析HTML并存储为哈希表,以及哈希表的常用操作如hset、hget等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  

  

  为了分别为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的键值对删除

 

 

转载于:https://www.cnblogs.com/lovele-/p/9800202.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值