Python3:ip代理池创建、维护,Redis库的储存,代码实战图文详解

搭建代理池作用

平时我们爬取网站的时候,如果太频繁,容易导致IP被封。所以搭建代理池,每次随机获取可用的代理,伪装成其它IP去访问网站,能够有效防止爬虫被封禁,让爬虫脱离IP被封的苦海。
代理有很多免费的网站,但是不稳定。付费的代理池会相对稳定很多,具体看个人需求。

搭建代理池的准备工作

安装Redis数据库、此外Python要安装:aiohttp、requests 、redis-py 、pyquery、Flask。

这里介绍一下Redis数据库在代理池的作用:
这里我们使用 Redis 的有序集合,集合的每一个元素都是不重复的,对于代理池来说,集合的元 素就变成了一个个代理,也就是 IP 加端口的形式,如 60.207.237.111 :8888 ,这样的一个代理就是集合 的一个元素。 另外,有序集合的每一个元素都有一个分数字段,分数是可以重复的,可以是浮点数类 型,也可以是整数类型。 该集合会根据每一个元素的分数对集合进行排序,数值小的排在前面,数值 大的排在后面,这样就可以实现集合元素的排序了。 对于代理池来说,这个分数可以作为判断一个代理是否可用的标志, 100 为最高分,代表最可用, 0 为最低分,代表最不可用。 如果要获取可用代理,可以从代理池中随机获取分数最高的代理,注意 是随机,这样可以保证每个可用代理都会被调用到。

主要模块

存储、获取、检测、接口四个模块

存储:负责存储抓取下来的代理。 首先要保证代理不重复, 要标识代理的可用情况,还 要动态实时处理每个代理,所以一种比较高效和方便的存储方式就是使用 Redis 的 Sorted Set,即有序集合

获取:需要定时在各大代理网站抓取代理。 代理可以是免费公开代理也可以是付费代 理,代理的形式都是 IP 加端口,此模块尽量从不同来源获取,尽量抓取高匿代理,抓取成功 之后将可用代理保存到数据库中。

检测:需要定时检测数据库中的代理。 这里需要设置一个检测链接,最好是爬取哪个网 站就检测哪个网站,这样更加有针对性,如果要做一个通用型的代理,那可以设置百度等链 接来检测。 另外,我们需要标识每一个代理的状态,如设置分数标识, 100 分代表可用,分 数越少代表越不可用。 检测一次,如果代理可用,我们可以将分数标识立即设置为 100 满 分,也可以在原基础上加 l分;如果代理不可用,可以将分数标识减 l 分,当分数戚

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值