LOADING

正在加载

使用代理IP池ProxyPool

壹 准备

当我们需要使用网上免费的代理池时,我们可以通过jhao104师傅的proxy_pool进行搭建自己的代理池。
工具:proxy_pool-2.4.0.zip
大致的使用方法是:

  • 下载必备的ProxyPoolRedis工具
  • 运行Redis,用于存储网上的代理IP
  • 修改Proxypool配置文件
  • 启动ProxyPool工具
  • 直接使用ProxyPoolAPI接口获取代理IP

贰 详细使用

2.1 下载ProxyPool

ProxyPool链接:ProxyPool
9c9536d230d6968ec32886c42a937286.png

2.2 下载数据库Redis

Redis链接:Redis

在Releases里,下载压缩包:
ce22f2ce1513ac188f7b4b841ca9a509.png

2.3 运行Redis

安装服务:输入命令安装Redis:redis-server --service-install redis.windows.conf
8e43e601caad8b4913a3ccd78241bff1.png
然后选择Redis服务运行:
13222f2703b5ed3eb6cfa18864657cd7.png
最后测试是否可以使用:

# 使用redis-cli.exe工具
# 把redis-cli.exe拷贝到要使用代理池的PC,然后在测试
redis-cli.exe -h 127.0.0.1 -p 6379

a113ab3299fb17ce43786306eea29256.png
安装Redis是为了将ProxyPool工具获取的IP存放到数据库里,方便获取。

2.4 修改Proxypool配置文件

文件在前面下载的Proxypool/setting.py,主要修改两处:

DB_CONN:Redis数据库位置,注意ip和端口,不需要加后缀
FROXY_FEYCHER:可用的代理ip地址,参考github上实时代理源有效信息

a5c7e72fa74f3a1d1723e59ebbdfcaea.png

2.5 启动代理池服务

打开两个程序:

启动调度程序:python proxyPool.py schedule
启动webApi服务:python proxyPool.py server

37905fa46cc2b197b4306188e7a9d650.png
cdfb8d510a0e79c8225e07915e01d8cf.png

2.6 最后就是使用了

这里需要注意的是代理池的IP很容易挂掉,当使用proxies参数进行代理时会非常容易出现代理用不了而出现本机IP的情况。

import requests
# 通过proxyPool的API获取代理IP
def get_proxy():
    #5000:settings中设置的监听端口,不是Redis服务的端口
    return requests.get("http://127.0.0.1:5000/get/").json()
# 使用完后,为了防止重复使用IP,可以通过proxyPool的API删除代理IP
def delete_proxy(proxy):
    requests.get("http://127.0.0.1:5000/delete/?proxy={}".format(proxy))

# 主代码
def getHtml():
    # 尝试的次数
    retry_count = 5
    # 获取代理IP
    proxy = get_proxy().get("proxy")
    print(proxy)
    while retry_count > 0:
        try:
            html = requests.get('http://www.baidu.com', proxies={"http": "http://{}".format(proxy)})
            print(html.text)
            break
        except Exception:
            retry_count -= 1
    # 删除代理池中代理
    delete_proxy(proxy)

getHtml()

叁 解决问题

  • Redis问题

    1)先卸载服务:
    redis-server --service-uninstall
    2)然后再安装:
    redis-server--service-install redis.windows.conf
    
  • Python问题

# ImportError: cannot import name 'Markup' from 'jinja2'
pip install jinja2==2.11.3

# ImportError: cannot import name 'soft_unicode' from 'markupsafe'
python -m pip install markupsafe==2.0.1

# ImportError: cannot import name 'json' from 'itsdangerous'
python -m pip install itsdangerous==2.0.1
avatar
小C&天天

修学储能 先博后渊


今日诗句