简介
通过网上的免费代理建立自己的代理池,本文学习github上jhao104/proxy_pool项目。
下载&安装
Redis:下载地址,可直接下载Windows安装文件,安装时选择注册系统服务,简单方便。
Redis Desktop Manager:下载地址
项目:下载地址,解压到指定文件夹。
安装所需依赖包
pip install -r requirements.txt
其中,lxml==3.7.2可能无法正常安装,可在requirements.txt将版本信息去除,安装最新的lxml。
如有git工具,亦可通过以下代码获取:
git clone git@github.com:jhao104/proxy_pool.git
注:推荐使用virtualenv工具建立独立项目空间。
配置&启动
配置Config/setting.py:
1 | # Config/setting.py 为项目配置文件 |
启动程序分为schedule调度程序和webserverApi服务
首先启动调度程序
python proxyPool.py schedule
然后启动webApi服务
python proxyPool.py webserver
启动过几分钟后即可看到抓取到的代理IP,可直接到数据库中查看,也可以通过api访问http://127.0.0.1:5010 查看。
Web Api
api | method | Description | arg |
---|---|---|---|
/ | GET | api介绍 | None |
/get | GET | 随机获取一个代理 | None |
/get_all | GET | 获取所有代理 | None |
/get_status | GET | 查看代理数量 | None |
/delete | GET | 删除代理 | None |
扩展
项目默认包含几个免费的代理获取方法,亦可通过以下方式扩展新的代理:
首先在GetFreeProxy类中添加获取代理的静态方法,需要以生成器(yield)形式返回host:ip格式的代理,例如:
1 | class GetFreeProxy(object): |
添加好方法后,修改Config/setting.py文件中的PROXY_GETTER项,在PROXY_GETTER下添加自定义的方法的名字:
1 | PROXY_GETTER = [ |
ProxySchedule会每隔一段时间抓取一次代理,下次抓取时会自动识别调用你定义的方法。
可用代理列表
目前实现的采集免费代理网站有
厂商名称 | 状态 | 更新速度 | 可用率 | 是否被墙 | 地址 |
---|---|---|---|---|---|
无忧代理 | 可用 | 几分钟一次 | * | 否 | 地址 |
66代理 | 可用 | 更新很慢 | * | 否 | 地址 |
西刺代理 | 可用 | 几分钟一次 | * | 否 | 地址 |
全网代理 | 可用 | 几分钟一次 | * | 否 | 地址 |
快代理 | 可用 | 几分钟一次 | * | 否 | 地址 |
云代理 | 可用 | 几分钟一次 | * | 否 | 地址 |
IP海 | 可用 | 几小时一次 | * | 否 | 地址 |
免费IP代理库 | 可用 | 快 | * | 否 | 地址 |
注:已去除无免费和被墙的代理网站。