通过前面的文章,代理池已经可以简单进行使用了。我们的代理池应是独立于爬虫等服务的,可通用多个爬虫或者其他业务。那如何对外提供代理源呢?那最好的选择自然是做成一个web服务,通过api获取即可。
设计思路
我们的web服务只是提供简单代理池的一些操作,所以选择使用 Python 编写的简单好用的轻量级 Web 应用框架Flask。
开发
在MyProxyPool
项目中新建api.py
:
from flask import Flask, g
from redisdb import RedisCli
__all__ = ['app']
app = Flask(__name__)
def get_conn():
if not hasattr(g, 'redis'):
g.redis = RedisCli()
return g.redis
@app.route('/')
def index():
return '<h1>Welcome to Proxy Pool System</h1>'
@app.route('/random')
def get_proxy():
"""
获取随机可用代理
:return: 随机代理
"""
return get_conn().random()
@app.route('/count')
def get_counts():
"""
获取代理池总量
:return: 代理池总量
"""
return str(get_conn().count())
if __name__ == '__main__':
# 测试代码
Tester().run()
这里只是简单提供了获取一个随机代理和代理总数的api接口,你可以自己根据需求添加入增加代理,删除代理等等接口。
运行后访问http://127.0.0.1:5000/可以看到
我们来随机获取一个代理和查看一下代理的数量
http://127.0.0.1:5000/random