首页投稿(暂停使用,暂停投稿)Python 运维程序员

IPProxyPool代理池重构

2016-12-12  本文已影响1121人  qiye

开源IP代理池

继上一篇开源项目IPProxys的使用之后,大家在github,我的公众号和博客上提出了很多建议。经过两周时间的努力,基本完成了开源IP代理池IPProxyPool的重构任务,业余时间基本上都花在上面了。(我的新书《Python爬虫开发与项目实战》发布了,大家在这里可以看到样章
IPProxyPool相对于之前的版本完成了哪些提升呢?主要包括一下几个方面:

大家如果感兴趣,可以到github上clone IPProxyPool源码,已经500多 star了。

IPProxyPool

下面说明一下使用方法:

项目依赖

Ubuntu,debian

1.安装sqlite数据库(一般系统内置): apt-get install sqlite3
2.安装requests,chardet,web.py,gevent: pip install requests chardet web.py sqlalchemy gevent
3.安装lxml: apt-get install python-lxml

注意:
Windows

1.下载sqlite,路径添加到环境变量
2.安装requests,chardet,web.py,gevent: pip install requests chardet web.py sqlalchemy gevent
3.安装lxml: pip install lxml或者下载lxml windows版

注意:

扩展说明

本项目默认数据库是sqlite,但是采用sqlalchemy的ORM模型,通过预留接口可以拓展使用MySQL,MongoDB等数据库。 配置方法: ‘’
1.MySQL配置

第一步:首先安装MySQL数据库并启动
第二步:安装MySQLdb或者pymysql(推荐)
第三步:在config.py文件中配置DB_CONFIG。如果安装的是MySQLdb模块,配置如下:
        DB_CONFIG={
            'DB_CONNECT_TYPE':'sqlalchemy',
            'DB_CONNECT_STRING' = 'mysql+mysqldb://root:root@localhost/proxy?charset=utf8'
        }
        如果安装的是pymysql模块,配置如下:
         DB_CONFIG={
            'DB_CONNECT_TYPE':'sqlalchemy',
            'DB_CONNECT_STRING' = 'mysql+pymysql://root:root@localhost/proxy?charset=utf8'
        }

sqlalchemy下的DB_CONNECT_STRING参考支持数据库,理论上使用这种配置方式不只是适配MySQL,sqlalchemy支持的数据库都可以,但是仅仅测试过MySQL。
2.MongoDB配置

第一步:首先安装MongoDB数据库并启动
第二步:安装pymongo模块
第三步:在config.py文件中配置DB_CONFIG。配置类似如下:
        DB_CONFIG={
            'DB_CONNECT_TYPE':'pymongo',
            'DB_CONNECT_STRING' = 'mongodb://localhost:27017/'
        }

由于sqlalchemy并不支持MongoDB,因此额外添加了pymongo模式,DB_CONNECT_STRING参考pymongo的连接字符串。

注意:

如果大家想拓展其他数据库,可以直接继承db下ISqlHelper类,实现其中的方法,具体实现参考我的代码,然后在DataStore中导入类即可。

try:
    if DB_CONFIG['DB_CONNECT_TYPE'] == 'pymongo':
        from db.MongoHelper import MongoHelper as SqlHelper
    else:
        from db.SqlHelper import SqlHelper as SqlHelper
    sqlhelper = SqlHelper()
    sqlhelper.init_db()
except Exception,e:
    raise Con_DB_Fail

有感兴趣的朋友,可以将Redis的实现方式添加进来。

具体的使用方法,大家请到github上看使用说明。欢迎大家赞赏分享。

上一篇 下一篇

猜你喜欢

热点阅读