此篇文章可以看作是对知乎分布式爬取中的IP代理设置的扩展,记录下IP代理池的获取、维护、和池中有效IP的持续使用。
这里还得感谢IP代理池的贡献者,我们可以直接在上面下载,按照说明配置好环境,启动后获取的IP(raw_proxy)和验证后的IP(useful_proxy)都会存到Redis内存中(默认),所以记得启动前开启redis-server。
下面介绍IP代理池在我的知乎分布式爬取项目中的应用。
下载的IP代理池程序已经对IP的获取、维护做了很完善的工作,但考虑到实际情况,我在设置了代理IP爬取知乎时,由于代理池中总会存在一些无效IP,一旦(随机)使用了这些无效IP,爬取效率就会大大降低,所以就思考能不能做到在使用过程中将无效IP剔除,将有效IP持续使用,避免IP频繁切换和无效IP的干扰?
当然,下面就是我的一些小小改动,使用后发现爬取效率大大地提高了。
首先设置redis方法,方便调用
class RedisClient(object):
"""
Reids client
"""
def __init__(self, name, host, port):
"""
init
:param name:
:param host:
:param port:
:return:
"""
self.name = name
self.__conn = redis.Redi