首页 > 数据库技术 > 详细

Python_01_IP代理池_实现代理池的数据库模块

时间:2020-04-01 11:35:26      阅读:104      评论:0      收藏:0      [点我收藏+]

  作用:用于对proxies集合进行数据库的相关操作

  目的:实现对数据库的增删改查操作

  步骤:

    1.在init中,建立数据库连接,获取要操作的集合,在del方法中关闭数据库连接

    2.提供基础的增删改查功能

      1)实现插入功能

      2)实现修改功能

      3)实现删除代理功能

      4)查询所有代理ip功能

    3.提供代理api模块使用的功能

      1)实现查询功能,根据条件进行查询,可以指定查询数量,先分数降序,速度升序排,保证优质的代理ip在上面.

      2)实现根据协议类型和要访问网站的域名获取代理ip列表

      3)实现根据协议类型和要访问完整的域名随机获取一个代理ip

      4)实现把指定域名添加到指定ip的diable_domain列表中

  代码:

from pymongo import MongoClient

from settings import MONGO_URL

from utils.log import logger

from domain import Proxy
class MongoPool(object):
    def __init__(self):
        # 建立数据库的连接
        self.client=MongoClient(MONGO_URL)
        # 获取要操作集合
        self.proxies=self.client[proxies_pool][proxies]


    def __del__(self):
        # 关闭数据库连接
        self.client.close()


    def insert_one(self,proxy):
        # 使用proxy的ip作为mongodb中数据的主键:_id
        count=self.proxies.count_documents({_id:proxy.ip})
        if count==0:
            dic=proxy.__dict__
            dic[_id]=proxy.id
            self.proxies.insert_one()
            logger.info("插入新的代理:{}".format(proxy))
        else:
            logger.warning("已存在的代理{}".format(proxy))


    def update_one(self,proxy):
        # 实现修改功能
        self.proxies.update_one({_id:proxy.ip},{$set:proxy.__dict__})


    def delete_one(self,proxy):
        # 实现删除功能
        self.proxies.delete_one({_id:proxy.ip})
        logger.info("删除代理IP:{}".format(proxy))


    def find_all(self):
        # 查询所有代理ip
        cursor=self.proxies.find()
        for item in cursor:
            # 删除_id这个key
            item.pop(_id)
            proxy=Proxy(**item)
            yield proxy

 

Python_01_IP代理池_实现代理池的数据库模块

原文:https://www.cnblogs.com/tkg1314/p/12609850.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!