手把手教你搭建代理IP池:
项目简介:
 爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。
GitHub地址:
 jhao104/proxy_pool: Python ProxyPool for web spider (github.com)
部署安装流程:
 首先需要将git源码克隆到本地:
git clone git@github.com:jhao104/proxy_pool.git
 

 重新创建一个python虚拟环境,防止包依赖冲突:
conda create -n env_name python=x.x
 
conda create -n pc python=3.8
 

查看当前所有环境:
conda env list 
 

进入某个环境:
conda activate 环境名
 
conda activate pc
 

安装相关包:
找到项目所在的requirements.txt 所在的目录:
我的在:D:\Git_local\proxy_pool\requirements.txt

然后在环境里面输入:
pip install D:\Git_local\proxy_pool\requirements.txt
 
环境部署就成功了,很多GitHub的项目如果需要在本地运行都需要这样的操作,因为python的库之前存在依赖,必须是某个版本的才可以,不然就会冲突。
数据库配置:



开启redis数据库:
注意先开启服务端,在开启客户端


启动项目:

# 如果已经具备运行条件, 可用通过proxyPool.py启动。
# 程序分为: schedule 调度程序 和 server Api服务
# 启动调度程序
python proxyPool.py schedule
# 启动webApi服务
python proxyPool.py server
 
python proxyPool.py schedule
 

python proxyPool.py server
 



成功!!!
代码接口:
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
    # 删除代理池中代理
    delete_proxy(proxy)
    return None
                


















