美文网首页
维护动态代理池

维护动态代理池

作者: 小白猿 | 来源:发表于2017-11-13 10:02 被阅读97次

    代理池要求

    • 多站抓取,异步检测
    • 定时筛选,持续更新
    • 提供接口,易于提取

    代理池架构

    代理池架构
    • 获取器: 从各大网站上获取代理
    • 过滤器: 筛选获取器中获取的代理,保留可用代理,剔除不可用代理
    • 代理队列:将获取器中的可能代理插入代理队列备用
    • 定时检测器:定时从代理队列中取出一定数量的代理进行检测,重复过滤器作用,并将可用的代理放回代理队列,保证代理队列总有可能的代理
    • API: 可以用可用代理从数据库取出内嵌至网页,通过接口获取代理内容的ip和端口

    代理池示例讲解

    地址

    https://github.com/Germey/ProxyPool.git

    项目结构图

    代码结构图

    概述 :

    • examples: 运行示例
    • proxypool:具体实现代码
    • run.py:运行入口文件
    • setup.py:安装文件

    各模块功能

    • getter.py 爬虫模块

      • class proxypool.getter.FreeProxyGetter
        爬虫类,用于抓取代理源网站的代理,用户可复写和补充抓取规则。
    • schedule.py 调度器模块

      • class proxypool.schedule.ValidityTester
        异步检测类,可以对给定的代理的可用性进行异步检测。

      • class proxypool.schedule.PoolAdder
        代理添加器,用来触发爬虫模块,对代理池内的代理进行补充,代理池代理数达到阈值时停止工作。

      • class proxypool.schedule.Schedule
        代理池启动类,运行RUN函数时,会创建两个进程,负责对代理池内容的增加和更新。

    • db.py Redis 数据库连接模块

      • class proxypool.db.RedisClient
        数据库操作类,维持与Redis的连接和对数据库的增删查该,
    • error.py 异常模块

      • class proxypool.error.ResourceDepletionError
        资源枯竭异常,如果从所有抓取网站都抓不到可用的代理资源, 则抛出此异常。

      • class proxypool.error.PoolEmptyError
        代理池空异常,如果代理池长时间为空,则抛出此异常。

    • api.py API模块
      启动一个Web服务器,使用Flask实现,对外提供代理的获取功能。

    • utils.py 工具箱

    • setting.py 设置

    相关文章

      网友评论

          本文标题:维护动态代理池

          本文链接:https://www.haomeiwen.com/subject/yeubmxtx.html