• Python 抓取数据存储到Redis中


      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的键值对删除

     

  • 相关阅读:
    一些Cassandra+YCSB异常
    memcached使用
    YCSB报": No such file or directory"异常
    dynamo与cassandra区别
    XT535
    北京地区护照办理流程
    一些iptables配置
    debian6保存iptables规则
    pdf转eps后存在大片空白的处理
    sql server 2008 数据库可疑的解决步骤
  • 原文地址:https://www.cnblogs.com/lovele-/p/9800202.html
Copyright © 2020-2023  润新知