通过前面的文章,代理池已经可以简单进行使用了。我们的代理池应是独立于爬虫等服务的,可通用多个爬虫或者其他业务。那如何对外提供代理源呢?那最好的选择自然是做成一个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

http://127.0.0.1:5000/count

本节代码戳我

微信 OR 支付宝 扫描二维码
给复仇者码农 打个赏吧  
微信打赏   支付宝打赏  
金额随意 快来“打”我呀~

发表评论