简介
书接上文,已经可以初步将IP代理池代码跑起来了,也可以通过数据库或web接口获取当前可用代理,本文针对代码做简单介绍。
代码包括四个模块:存储模块、爬取模块、测试模块和接口模块。
存储模块:负责存储爬取下来的代理,使用Redis数据库的SortedSet(有序集合)进行存储,确保代理无重复,并对代理是否可用进行标记。
爬取模块:负责基于提供免费代理的网站进行爬取,代理的形式是IP+端口,爬取下来之后保存到数据库里。
测试模块:负责对代理池中代理的可用性进行测试,设置一个测试URL,然后使用代理去请求,根据响应的状态码判断代理是否可用。
接口模块:提供给爬虫一个接口,返回代理池的接口功能。
代码目录结构
1 | │ LICENSE |
关键py
proxyPool.py
命令行入口,主要包括schedule()函数,基于命令行启动参数,分别调取代理获取调度程序和web服务,二者可分别调起,但无法在同一个命令行窗口同时调起(阻断)。
代理获取调度程序 : Schedule.ProxyScheduler.runScheduler
web服务 : Api.ProxyApi.runFlask