构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解

手把手教你搭建代理IP池:

项目简介:

​ 爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。

GitHub地址:

​ jhao104/proxy_pool: Python ProxyPool for web spider (github.com)

部署安装流程:

​ 首先需要将git源码克隆到本地:

git clone [email protected]:jhao104/proxy_pool.git

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第1张图片

​ 重新创建一个python虚拟环境,防止包依赖冲突:

conda create -n env_name python=x.x
conda create -n pc python=3.8

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第2张图片

查看当前所有环境:

conda env list 

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第3张图片

进入某个环境:

conda activate 环境名

conda activate pc

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第4张图片

安装相关包:

找到项目所在的requirements.txt 所在的目录:

我的在:‪D:\Git_local\proxy_pool\requirements.txt

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第5张图片

然后在环境里面输入:

pip install D:\Git_local\proxy_pool\requirements.txt

环境部署就成功了,很多GitHub的项目如果需要在本地运行都需要这样的操作,因为python的库之前存在依赖,必须是某个版本的才可以,不然就会冲突。

数据库配置:

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第6张图片

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第7张图片

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第8张图片

开启redis数据库:

注意先开启服务端,在开启客户端

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第9张图片

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第10张图片

启动项目:

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第11张图片

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

# 启动调度程序
python proxyPool.py schedule

# 启动webApi服务
python proxyPool.py server
python proxyPool.py schedule

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第12张图片

python proxyPool.py server

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第13张图片

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第14张图片

构建个人代理池:使用GitHub项目proxy_pool的搭建配置及代码接口详解_第15张图片

成功!!!

代码接口:

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

你可能感兴趣的:(反爬策略,github,爬虫,python,开源)