Python实现代理池

问题起源: 最近在研究Python爬虫, 爬虫自然少不了代理, 因此自己动手整理了一个代理池, 用的Free的代理, 因此用了多线程加快了爬取速度, 在这里大体记录一下.
技术栈: Python、Django、Celery
大体思路: 找到免费的代理网站,然后获取一些Free的代理地址,然后验证有效性,保存到数据库,暂时还没有分布式爬虫的需求,因此对于代理数量需求不大,因此本项目对于大数据支持并不完善(以后有需要在加^0^)。

借鉴了网上大神们写的代码, 使用Django进行网络请求的处理.

主要函数
class FreeProxy(object):
    """
    :param proxy
    :param [kwargs]
    return yield
    """

    def __init__(self, proxy, **kwargs):
        # Check params is callable.
        assert hasattr(proxy, '__call__')
        self.proxy = proxy(kwargs) if kwargs else proxy()

        from collections import Iterable
        # Check params is iterable.
        assert isinstance(self.proxy, Iterable)

    def get_free_proxy(self):
        return self.proxy

# proxy 函数例子
def get_any_proxy():
    proxy_list = [] # 自己获取的代理列表
    for proxy in proxy_list:
        yield proxy

在这里不具体写代理获取的代码了, 只是提供一下样例, 详细代码可以看我的源码(见下文).
然后, 我用Celery做了任务池, 定时自动获取可用代理地址, 写入数据库(sqlite), 定时删除无效地址.
具体使用方法不在这里赘述了, 详见https://github.com/anonymous-qsh/proxy_pool

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值