跨语言高性能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 requests
from bs4 import BeautifulSoup
import lxml
def 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
设置
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/WiseDoge/article/details/60775682
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
发表于 2020-02-25 01:33
阅读 ( 112 )