搭建COOKIE池(一)--存储模块

搭建COOKIE池-存储模块

安装redis库
注意
  1. python终端直接pip install redis仅仅只是安装了库,还需要启动服务
  2. 启动服务:在GitHub上找到relase->点击最新版本的redis服务,下载安装
redis–储存key-value键值对的大字典型数据库
  1. 创建存储对象–redis.Redis(host=‘localhost’, port=6379,decode_response=True)

    host=‘localhost’–固定写法

    port=6379 – 固定写法

    decode_response=True – 将字节结果转换为字符串,因为redis得到的结果为字节

  2. 创建相应的hash作为键值对的标识,一个hash下面可以有多个键值对,相当于给所有键值对取名

    对象.hset(hash,键,值) 键为用户名,值为cookie

  3. 获取指定键对应的值

    ​ 对象.hget(hash名称,键)

    获取所有的键

    ​ 对象.hkeys(hash名称)

    获取所有的值

    ​ 对象.hvals(hash名称)

    获取所有的键值对

    ​ 对象.hgetall(hash名称)

    获取键值对的数量

    ​ 对象.hlen(hash名称)

  4. 删除指定键名的键值对

    ​ 对象.hdel(hash名称,键)

import redis
import random


class RedisClient:

    def __init__(self, data_type, website, host='localhost', port=6379, password=None):
        """
        创建redis对象,声明爬取网页及其类型
        :param data_type: 网址类型
        :param website:网址
        :param host:启用redis固定写法
        :param port:启用redis固定写法
        :param password:启用redis密码,可不用传参
        :param decode_response:将结果转换成字符串,因为redis取出的结果默认是字节,
        """
        self.use_service = redis.StrictRedis(host=host, port=port, decode_responses=True)
        self.data_type = data_type
        self.website = website
        self.password = password

    # 设置hash名称
    def name(self):
        return f'{self.data_type}:{self.website}'

    def add_username(self, username, value):
        """
        添加用户名密码键值对
        :param username: 用户名
        :param value: cookie
        :return: hash标识键值对
        """
        # self.name()为hash,相当于键值对的标识,其名下可以有多个键值对
        return self.use_service.hset(self.name(), username, value)

    def get(self, username):
        """
        获取键名对应的值
        :param username: 用户名
        :return: cookie
        """
        return self.use_service.hget(self.name(), username)

    def del_key(self, username):
        """
        删除指定键名的键值对
        :param username:
        :return:
        """
        return self.use_service.hdel(self.name(), username)

    def count(self):
        """
        获取hash中键值对的数量
        :return:
        """
        return self.use_service.hlen(self.name())

    def choice_cookie(self):
        """
        hvals方法获取所有的值
        随机选择cookie
        :return: cookie
        """
        return random.choice(self.use_service.hvals(self.name()))

    def all_username(self):
        """
        获取所有的用户名
        :return:以列表形式返回
        """
        return self.use_service.hkeys(self.name())

    def all_hash(self):
        """
        获取所有的键值对
        :return:以字典形式返回
        """
        return self.use_service.hgetall(self.name())

    def check(self, username):
        """
        检查键值对是否成功存入
        :param username:
        :return:
        """
        judge = self.use_service.hexists(self.name(), username)
        if judge:
            return '上传成功'
        else:
            return '上传失败'


if __name__ == '__main__':
    boss = RedisClient('acounts', 'boss')
    boss.add_username('ew58963efe', '123456')

    print(boss.choice_cookie())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值