当前位置:   article > 正文

【学习笔记】python爬虫---代理池_if not hasattr(g, 'redis'):

if not hasattr(g, 'redis'):

背景:崔庆才的爬虫学习笔记

整体架构:

 

获取模块【各大网址爬取代理】----->存储模块【redis有序集合存储】<==========>检测模块

                                                                    ||

                                                                    V

                                                       接口模块【web接口】

 

============================================================================================

创建代理池项目

项目结构如下:

第一:存储模块

1、存储模块,选中redis数据库中的有序集合。

------------------------------------------------------------------------------------------------------------------------

说明:1、redis有序集合:

  •                 a、有序集合,有键值对构成的数据集合,键又叫成员member,值又叫分值score。
  •                 b、分值必须是浮点数/整数型,并且按照分值的由低到高排序。
  •                 c、键【member】必须唯一,分值可重复

            例子:键【member】:220.12.23.62 :6666      值【score】:98

-------------------------------------------------------------------------------------------------------------------------

2、代理作为键【member】,每个代理设置对应的值【score】

       a、初始值init_score设置为10

       b、最大值设置为100

       c、检测不通过减一分,通过设置满分,得分为0自动删除

3、定义一个类RedisClient()实现如下功能

a、一旦实例化该类,自动初始化【连接数据库】,并作为该实例的一个属性

b、类实现以下方法:

   4、相关代码

  1. import redis
  2. from proxy_pool_new.settings import REDIS_HOST,REDIS_PORT,REDIS_PASSWORD,REDIS_KEY
  3. from proxy_pool_new.settings import MAX_SCRORE,MIN_SCORE,INITIAL_SCORE
  4. from proxy_pool_new.error import PoolEmptyerror
  5. from random import choice
  6. import re
  7. from .logger_proxy import mylogger
  8. logger=mylogger.get_logger(name='db')
  9. class RedisClient(object):
  10. def __init__(self, host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD):
  11. """
  12. 初始化
  13. :param host: redis 地址
  14. :param part: redis 端口
  15. :param password: redis 密码
  16. decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。
  17. 例子:不加,结果前多一个b, b'hello world'
  18. """
  19. self.db = redis.StrictRedis(host= host, port=port, password=password, decode_responses=True)
  20. def add(self,proxy,score=INITIAL_SCORE):#score 已经又默认值,如果不特别指定
  21. """
  22. 添加代理,至代理池,并设置初始分值
  23. :param proxy: 获取的单个代理
  24. :param intial_socore: 初始评分值
  25. :return:
  26. """
  27. if not re.match('\d+\.\d*\.\d*\.\d+\:\d*',proxy):
  28. logger.info(
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/209221
推荐阅读
相关标签
  

闽ICP备14008679号