对于代理IP池怎么维护?

作者:IPIDEA

2021-02-22 17:07:25

抓取数据时,IP被防止账号关联。为了顺利开展工作,选择了代理IP。以下是分享爬虫的工作经验,提供一些代理IP池维护的心得。在使用代理ip之前,IPIDEA全球代理建议应该首先了解几件事:

 

第一、返回ip格式的操作。

可以直接请求Json格式数据,然后返回json数据进行操作包提取、删除和添加。当然,在实际使用ip代理时,最好在浏览器中请求一次,复制一次,创建一个新的py文件来练习它的操作。

 

第二、ip的有效期。

现在,大多数ip代理都有有效期。有效期是1-5分钟。当ip过期时,您需要从ip池中删除此ip。当ip不足时,应该引入新的ip并将其添加到当前ip池中。动态维护ip地址池。

 

第三、python3使用代理ip。

过去,我的python3使用代理ip,它也有格式。你爬的是http,https是https。

 

第四、异常处理。

重写爬网程序时,必须对所有可能产生异常的操作进行tryexcept异常处理。应该注意异常是超时异常、ip不可用异常、过期异常还是操作dom树时生成的异常。对于不同的例外应该采取不同的策略。(可以通过状态码和全局变量来判断)。

 

第五、分析目标网站的代理ip需求。

您需要设置最小ip池和请求的IP数量,以便不要太大或太小,这可以提前测试。比如在你爬的网站上同时换10个ip是不够的。

 

解决方案方向:

写一个小程序测试操作返回的json数据。

设置全局列表ipdate和一个全局msg{}字典(其实字典是从列表中随机选择的一个ip和端口,不过记录标记可以很好的删除)。

将请求ip的操作添加到全局列表(数组)中,并将其作为loadip()函数写入,这样即使ip不足也可以添加(listextend方法知道它不是追加)。

写一个随机选择ip的函数getproxies(),全球住宅IP,高效采集公开数据proxies{}中的内容。同时,味精也要全球住宅IP,高效采集公开数据。请注意,python函数在更改全局变量之前需要在函数中声明globalmsg。在每个http请求之前执行更新操作。

所有操作都在tryexcpet操作中,不同的异常处理方式不同。比如(有的因为ip异常不爬,有的因为dom结构异常需要跳过)。

当然,实际处理可能会遇到各种问题,比如页面跳转重定向,ssl证书,有些网站还可能有浏览器名或者cookie。这里就不多介绍了。


*ipidea提供的服务必须在境外网络环境下使用

热门资讯