您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

bubuko 2022/1/25 20:01:05 python 字数 5839 阅读 978 来源 http://www.bubuko.com/infolist-5-1.html

作用:用于对proxies集合进行数据库的相关操作 目的:实现对数据库的增删改查操作 步骤: 1.在init中,建立数据库连接,获取要操作的集合,在del方法中关闭数据库连接 2.提供基础的增删改查功能 1)实现插入功能 2)实现修改功能 3)实现删除代理功能 4)查询所有代理ip功能 3.提供代理 ...

  作用:用于对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


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶