赞
踩
背景:崔庆才的爬虫学习笔记
整体架构:
获取模块【各大网址爬取代理】----->存储模块【redis有序集合存储】<==========>检测模块
||
V
接口模块【web接口】
============================================================================================
项目结构如下:
------------------------------------------------------------------------------------------------------------------------
说明:1、redis有序集合:
例子:键【member】:220.12.23.62 :6666 值【score】:98
-------------------------------------------------------------------------------------------------------------------------
a、初始值init_score设置为10
b、最大值设置为100
c、检测不通过减一分,通过设置满分,得分为0自动删除
a、一旦实例化该类,自动初始化【连接数据库】,并作为该实例的一个属性
b、类实现以下方法:
- import redis
- from proxy_pool_new.settings import REDIS_HOST,REDIS_PORT,REDIS_PASSWORD,REDIS_KEY
- from proxy_pool_new.settings import MAX_SCRORE,MIN_SCORE,INITIAL_SCORE
- from proxy_pool_new.error import PoolEmptyerror
- from random import choice
- import re
- from .logger_proxy import mylogger
- logger=mylogger.get_logger(name='db')
-
- class RedisClient(object):
- def __init__(self, host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD):
- """
- 初始化
- :param host: redis 地址
- :param part: redis 端口
- :param password: redis 密码
- decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。
- 例子:不加,结果前多一个b, b'hello world'
- """
- self.db = redis.StrictRedis(host= host, port=port, password=password, decode_responses=True)
-
- def add(self,proxy,score=INITIAL_SCORE):#score 已经又默认值,如果不特别指定
- """
- 添加代理,至代理池,并设置初始分值
- :param proxy: 获取的单个代理
- :param intial_socore: 初始评分值
- :return:
- """
- if not re.match('\d+\.\d*\.\d*\.\d+\:\d*',proxy):
- logger.info(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。