源码地址: GitHub
剖析:下载源码,配置Redis即可使用。
该代理池可分为四大模块:
- 存储模块
- 获取模块
- 检测模块
- 接口模块
最终文件结构:
执行文件分析:
-
api.py
作为接口模块,即通过web访问可以得到一个可用的代理。采用轻量级Flask库进行编写。 -
crawler.py
作为获取模块,通过网络爬虫从免费代理网站爬取代理,这里使用Redis存储。 -
db.py
作为存储模块,将爬取的代理存储到Redis。 -
error.py
无可用代理处理文件。 -
getter.py
获取模块的执行文件。 -
importer.py
手动导入代理文件(可忽略)。 -
scheduler.py
代理池的调度文件。 -
setting.py
存储变量文件。 -
tester.py
作为检测模块,检测爬取的代理是否可用,爬谁以谁为测试网站,在此以百度为例。 -
utils.py
获取模块中,获得网页源码的执行文件,使用requests库。 -
run.py
代理池运行文件 -
test.py
通过接口模块获取代理,测试代理是否可用。
执行:
- 启动redis
- 执行spider:python3 run.py:
检测:
接口:
测试:
源码地址: GitHub
参考书籍:《Python3网络爬虫开发实战》
注:2019-06-16
根据评论里的老哥出现的问题,发现最新版的Redis,可能会出现报错,原因是方法参数的变更。
需要在 db.py 做如下两个修改:
修改1:
修改2: