zoukankan      html  css  js  c++  java
  • IP 代理池

    https://github.com/jhao104/proxy_pool


    安装依赖

    python -m pip install -r requirements.txt
    

    配置 Config/setting.py

    # Config/setting.py 为项目配置文件
    DB_TYPE = getenv('db_type', 'REDIS').upper()
    DB_HOST = getenv('db_host', '127.0.0.1')
    DB_PORT = getenv('db_port', 6379)
    DB_PASSWORD = getenv('db_password', 'redis123')
    
    
    """ 数据库配置 """
    DATABASES = {
        "default": {
            "TYPE": DB_TYPE,
            "HOST": DB_HOST,
            "PORT": DB_PORT,
            "NAME": "proxy",
            "PASSWORD": DB_PASSWORD
        }
    }
    
    # 上面配置启动后,代理池访问地址为 http://127.0.0.1:5010
    

    启动

    # 如果你的依赖已经安装完成并且具备运行条件,可以在cli目录下通过ProxyPool.py启。动
    # 程序分为: schedule 调度程序 和 webserver Api服务
    
    # 首先启动调度程序
    >>>python proxyPool.py schedule
    
    # 然后启动webApi服务
    >>>python proxyPool.py webserver
    

    Docker

    docker pull jhao104/proxy_pool
    
    # 远程数据库
    docker run --env db_type=REDIS --env db_host=x.x.x.x --env db_port=6379 --env db_password=pwd_str -p 5010:5010 jhao104/proxy_pool
    
    # 宿主机上的数据库
    docker run --env db_type=REDIS --env db_host=host.docker.internal --env db_port=6379 --env db_password=pwd_str -p 5010:5010 jhao104/proxy_pool
    

    使用

    启动过几分钟后就能看到抓取到的代理IP
    
    api method Description arg
    / GET api介绍 None
    /get GET 随机获取一个代理 None
    /get_all GET 获取所有代理 None
    /get_status GET 查看代理数量 None
    /delete GET 删除代理

    爬虫使用

    如果要在爬虫代码中使用的话, 可以将此api封装成函数直接使用,例如:

    import requests
    
    def get_proxy():
        return requests.get("http://127.0.0.1:5010/get/").json()
    
    def delete_proxy(proxy):
        requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))
    
    # your spider code
    
    def getHtml():
        # ....
        retry_count = 5
        proxy = get_proxy().get("proxy")
        while retry_count > 0:
            try:
                html = requests.get('http://www.example.com', proxies={"http": "http://{}".format(proxy)})
                # 使用代理访问
                return html
            except Exception:
                retry_count -= 1
        # 出错5次, 删除代理池中代理
        delete_proxy(proxy)
        return None
    

    使用示例

  • 相关阅读:
    4个小时实现一个HTML5音乐播放器
    一款好看+极简到不行的HTML5音乐播放器-skPlayer
    操纵浏览器的历史记录
    基于jQuery查找dom的多种方式性能问题
    你真的了解console吗?
    关于overflow:hidden和bfc
    jQuery插件开发
    深入浅出jsonp
    jQuery.extend 函数详解
    [转] Hibernate一级缓存、二级缓存
  • 原文地址:https://www.cnblogs.com/kai-/p/12659815.html
Copyright © 2011-2022 走看看