用Python实现代理池(Proxy Pool)系统
来源:互联网 发布:ubuntu 16.04更新源 编辑:程序博客网 时间:2024/05/08 09:27
项目的代码在这里:https://github.com/WiseDoge/ProxyPool
跨语言高性能IP代理池,Python实现。
注意:请运行程序前先更新一下抓取代理的函数。
运行环境
Python 3.5
(请务必保证Python的版本在3.5以上,否则异步检验无法使用。)
Redis
Redis官网并没有提供Windows的安装版,Windows用户可以点击此处下载一个我自己编译的二进制版本(3.2版本2.7MB,VS 2015编译)。
安装
① 直接使用
安装依赖
$ pip install -r requirements.txt
Windows用户如果无法安装lxml库请点击这里。
打开代理池和API
$ cd proxypool
$ python3 run.py
② 安装使用
安装
$ cd proxypool
$ python setup.py install
打开代理池和API
$ proxypool_run
③ 使用二进制包
Windows 用户可以点击此处获取此程序的二进制包,直接运行。
使用API获取代理
访问http://127.0.0.1:5000/
进入主页,如果显示’Welcome’,证明成功启动。
访问http://127.0.0.1:5000/get
可以获取一个可用代理。
访问http://127.0.0.1:5000/count
可以获取代理池中可用代理的数量。
也可以在程序代码中用相应的语言获取,例如:
import requestsfrom bs4 import BeautifulSoupimport lxmldef get_proxy(): r = requests.get('http://127.0.0.1:5000/get') proxy = BeautifulSoup(r.text, "lxml").get_text() return proxy
各模块功能
proxyGetter.py
爬虫模块
- class proxypool.proxyGetter.FreeProxyGetter
爬虫类,用于抓取代理源网站的代理,用户可复写和补充抓取规则。
schdule.py
调度器模块
- class proxypool.schdule.VaildityTester
异步检测类,可以对给定的代理的可用性进行异步检测。
- class proxypool.schdule.PoolAdder
代理添加器,用来触发爬虫模块,对代理池内的代理进行补充,代理池代理数达到阈值时停止工作。
- class proxypool.schdule.Schedule
代理池启动类,运行RUN函数时,会创建两个进程,负责对代理池内容的增加和更新。
db.py
Redis数据库连接模块
- class proxypool.db.RedisClient
数据库操作类,维持与Redis的连接和对数据库的增删查该,
error.py
异常模块
- class proxypool.error.ResourceDepletionError
资源枯竭异常,如果从所有抓取网站都抓不到可用的代理资源,
则抛出此异常。
- class proxypool.error.PoolEmptyError
代理池空异常,如果代理池长时间为空,则抛出此异常。
api.py
API模块,启动一个Web服务器,对外提供代理的获取功能。
utils.py
工具箱
setting.py
设置
- 用Python实现代理池(Proxy Pool)系统
- python爬虫代理IP池(proxy pool)
- Proxy Pool 极简的爬虫代理池服务
- Python实现设计模式--06.代理模式(Proxy Pattern)
- JAVA实现代理proxy
- 23种设计模式之python实现--代理(Proxy)模式
- Python使用HTTP代理 Proxy
- Python 实现代理池
- python黑帽之TCP代理proxy(chapter1)
- python 爬虫入门(3) proxy详解 代理详解
- Linux IP代理筛选系统(shell+proxy)
- Linux IP代理筛选系统(shell+proxy)
- Linux IP代理筛选系统(shell+proxy)
- Linux IP代理筛选系统(shell+proxy)
- Proxy实现java动态代理
- JDK Proxy实现接口代理
- Java 实现代理(Proxy)模式
- Java 实现代理(Proxy)模式
- Hugegraph Configuration -- KCVSConfiguration
- 深入理解计算机系统--程序的机器级表示
- java菜鸟对构造函数的理解
- android 获取手机信息的一些知识
- yii2 增删改查
- 用Python实现代理池(Proxy Pool)系统
- Java读写json格式的txt文件中文乱码问题
- 立方变自身
- IOS专项测试instruments
- RabbitMQ 入门(一)
- vs2010额外安装iis
- tomcat 高并发配置 与优化
- 发送有序广播
- 线程类Thread的API接口分析系列之守护线程setDaemon