代理池的维护

我们在 9.1 节了解了给各个请求库设置代理的方法,如何实时高效地获取大量可用代理变成了新的问题。

首先,互联网上有大量公开的免费代理,当然我们也可以购买付费代理但无论是免费代理还是付费代理,都不能保证是可用的,因为自己选用的 IP,可能其他人也在用,爬取的还是同样的目标网站,从而被封禁,或者代理服务器突然发生故障、网络繁忙。一旦选用的是一个不可用的代理,势必就会影响爬虫的工作效率。所以要提前做筛选,删除掉不可用的代理,只保留可用代理。

那么怎么实现呢?这就需要借助一个叫代理池的东西了。本节就来介绍一下如何搭建一个高效易用的代理池。

准备工作

代理池的目标

代理池的整体架构

代理池的实现

运行

总结

本节中我们学习了代理池的设计思路和实现方案,有了这个代理池,我们就可以实时获取一些可用的代理了。相对之前的实战案例,整个代理池的代码量多了很多,逻辑复杂度也比较高,建议好好理解和消化一下。

本节的代码见 https://github.com/Python3WebSpider/ProxyPool ,代码库中还提供了基于 Docker 和 Kubernetes 的运行和部署操作,可以帮助我们更快捷地运行代理池。