上一篇博客地址:python代理池的构建3——爬取代理ip

一、mongdb数据库的增删改查(Mongo_pool.py)

#-*-coding:utf-8-*-
'''
实现代理池的数据库模块 ●作用:用于对proxies 集合进行数据库的相关操作 目标:实现对数据库增删改查相关操作步骤: 1.在init 中,建立数据连接,获取要操作的集合,在del方法中关闭数据库连接2.提供基础的增删改查功能 i.实现插入功能i.实现修改该功能 ili.实现删除代理:根据代理的IP删除代理iv.查询所有代理IP的功能3.提供代理API模块使用的功能 i.实现查询功能:根据条件进行查询,可以指定查询数量,先分数降序,速度升序排,保证优质的代 理IP在上面. ii.实现根据协议类型和要访问网站的域名,获取代理IP列表 ili.实现根据协议类型和要访问网站的域名,随机获取一个代理IPiv.实现把指定域名添加到指定IP的disable_plomain列表中. '''
import sys
import logging
import pymongo
from pymongo import MongoClient
sys.path.append("..")
sys.path.append("../..")
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() #mongdb中"_id"为主键
def insert_one(self,proxy):
count = self.proxies.count_documents({'_id':proxy.ip})
if count == 0:
dic = proxy.__dict__
dic['_id']=proxy.ip
self.proxies.insert_one(dic)
logger.info("insert Success:{}".format(proxy))
else:
logger.warning("insert Default:{}".format(proxy)) def update_proxy(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("delete ip: {}".format(proxy.ip)) def find_all(self):
all = self.proxies.find()
for item in all:
item.pop('_id')
proxy = Proxy(**item)
yield proxy def find(self,condition={},count=10):
all = self.proxies.find(condition,limit=count).sort(
[('socre',pymongo.DESCENDING),('speed',pymongo.ASCENDING)]
) proxy_list = []
for item in all:
item.pop('_id')
proxy = Proxy(**item)
proxy_list.append(proxy)
return proxy_list def get_proxies(self,protocol=None,domain=None,count=8,nick_type=0):
condition = {'nick_type':nick_type}
if protocol is None:
condition['protocol']=2
elif protocol.lower() == 'http':
condition['protocol']={'$in':[0,2]}
else :
condition['protocol'] = {'$in': [1, 2]} if domain:
condition['disable_domains'] = {'$nin':[domain]} return self.find(condition,count=count) def add_disable_domain(self,ip,domain):
if self.proxies.count_documents({'_id':ip,'disable_domain':domain})==0:
self.proxies.update_one({'_id':ip},{'$push':{'disable_domains':domain}})
return True
return False if __name__ == '__main__':
mongo = MongoPool()
'''
proxy = Proxy('117.95.55.40', port='9999') mongo.insert_one(proxy)
''' '''
for proxy in mongo.find_all():
print(proxy)
''' mongo.add_disable_domain('117.95.55.40','jd.com')

二、介绍一下这一部分代码怎么用

就是首先创建一个这部分的类对象,然后通过"类.方法名(参数)"来执行方法,这个参数就是我们之前的代理ip对象,这是第一篇博客的内容

python代理池的构建3——爬取代理ip这一篇博客就是对这个MongoPool类的使用

要想了解更多Mongodb数据库操作,可以看这里:https://www.runoob.com/mongodb/mongodb-tutorial.html

三、python代理池的构建的其他链接

python代理池的构建5——对mongodb数据库里面代理ip检查

python代理池的构建3——爬取代理ip

python代理池的构建2——代理ip是否可用的处理和检查

python代理池的构建1——代理IP类的构建,以及配置文件、日志文件、requests请求头

四、关于代码一些问题解决链接:

协程gevent模块和猴子补丁

python中schedule模块的简单使用 || importlib.import_module动态导入模块

Python中“*”和“**”的用法 || yield的用法 || ‘$in’和'$nin' || python @property的含义

python代理池的构建4——mongdb数据库的增删改查的更多相关文章

  1. 采用c3p0数据库连接池底层是jdbc的数据库的增删改查

    1.新建dbutils包,里面是JdbcUtils类: package cn.com.xxx.xxx.dbutil; import java.sql.Connection; import java.s ...

  2. Laravel 数据库实例教程 —— 使用查询构建器对数据库进行增删改查

    原文地址:https://blog.csdn.net/lmy_love_/article/details/72832259 获取查询构建器很简单,还是要依赖DB门面,我们使用DB门面的table方法, ...

  3. python代理池的构建5——对mongodb数据库里面代理ip检查

    上一篇博客地址:python代理池的构建4--mongdb数据库的增删改查 一.对数据库里面代理ip检查(proxy_test.py) #-*-coding:utf-8-*- ''' 目的:检查代理I ...

  4. python代理池的构建3——爬取代理ip

    上篇博客地址:python代理池的构建2--代理ip是否可用的处理和检查 一.基础爬虫模块(Base_spider.py) #-*-coding:utf-8-*- ''' 目标: 实现可以指定不同UR ...

  5. python代理池的构建2——代理ip是否可用的处理和检查

    上一篇博客地址:python代理池的构建1--代理IP类的构建,以及配置文件.日志文件.requests请求头 一.代理ip是否可用的处理(httpbin_validator.py) #-*-codi ...

  6. python代理池的构建1——代理IP类的构建,以及配置文件、日志文件、requests请求头

    一.整体结构 二.代理IP类的构建(domain.py文件) ''' 实现_ init_ 方法, 负责初始化,包含如下字段: ip: 代理的IP地址 port:代理IP的端口号 protocol: 代 ...

  7. python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...

  8. python通过pymysql实现数据库的增删改查

    今天实现了python对于数据库的增删改查工作: 具体的每一步的数据库的增删盖茶自己都实验过了. 掌握了基本的数据库操作语言.然后就是对于tuple()的认识. 以及对于查询语句中的:fetchone ...

  9. python web.py操作mysql数据库,实现对数据库的增删改查操作

    使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...

随机推荐

  1. 基于JavaFX实现的音乐播放器

    前言 这个是本科四年的毕业设计,我个人自命题的一个音乐播放器的设计与实现,其实也存在一些功能还没完全开发完成,但粗略的答辩也就过去了,还让我拿了个优秀,好开心.界面UI是参考网易云UWP版本的,即使这 ...

  2. newbee-mall 开源商城新计划:秒杀功能、优惠券、对接支付宝

    新项目是 newbee-mall 的升级版本,暂时就叫它 newbee-mall-plus 吧,第一阶段会开发秒杀功能.优惠券.对接支付宝这些功能,也会慢慢加入 Redis. Elastic Sear ...

  3. 鸿蒙的fetch请求加载聚合数据的前期准备工作-手动配置网络权限

    目录: 1.双击打开"config.json"文件 2.找到配置网络访问权限位置1 3.配置内容1 4.默认访问内容是空的 5.添加配置内容2 6.复制需要配置的网络二级URL 7 ...

  4. MongoDB查询优化--explain,慢日志

    引入 与Mysql数据库一样,MongoDB也有自己的查询优化工具,explain和慢日志 explain shell命令格式 db.collection.explain().<method(. ...

  5. centos7 开放指定端口

    centos7 开放指定端口 #开放8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent #重载防火墙 firewall- ...

  6. linux自定义位置安装tomcat8.5

    1 下载tomcat安装文件 下载地址:https://tomcat.apache.org/download-80.cgi  2 解压文件 tar -zxvf apache-tomcat-8.5.56 ...

  7. 鸿蒙的多媒体及Menu组件及小程序的多媒体组件

    目录: js业务逻辑层 视图渲染层 css属性设置 效果图 微信小程序展示 内网穿透工具下载 我们在搭建一个小程序或者网站的时候,往往要加载很多的图片,音频和视频文件.如果都从服务器获取静态资源,这样 ...

  8. C# 正则表达式 -- 复习

    符号解释: \ 特殊的字符,转义 ^ 匹配输入的字符串的开始位置 $ 匹配输入的字符串的结束位置 * 匹配0次或多次,等价于{0,} + 匹配1次或多次,等价于{1,} ? 匹配0次或1次,等价于{0 ...

  9. 错误捕捉过滤器 .NetCore版

    前言 继承ExceptionFilterAttribute后,重写OnException函数. 统一捕捉所有报错,格式化返回前端. 代码实现 基类控制器 在基类控制器上添加[ErrorCatch]特性 ...

  10. code-server Command ' ' not found

    由于通过一些特殊的方式登录linux用户后,全局变量不会自动加载,需要在 vscode 的 bash terminal手动读取 输入 source /etc/profile 或者vim ~/.bash ...