作用:用于对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
原文:https://www.cnblogs.com/tkg1314/p/12609850.html
如果您也喜欢它,动动您的小指点个赞吧