技术指南

首页 / 技术指南

技术指南

使用代理IP池怎么维护?

2019-09-06 18:07:11   来源:   点击:
  使用免费代理IP的时候,在爬取数据的时候,遇到了IP被封杀的情况。为了顺利开展工作,选用付费的代理IP,像代理ip,以下分享爬虫工作经验,对代理IP池的维护提供一些见解。

 

使用代理IP池怎么维护

 

  在使用代理ip之前,首先要了解几样东西:

 

  一:对返回ip格式的操作

 

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

 

  二:ip的有效期

 

  现在大部分的ip代理都是有有效期的,我买的就是1-5分钟的有效期(蘑菇的有效期其实还是挺长的),当ip失效后你需要将此ip从ip池中删除。当ip不够的时候又要引入新的ip添加到当前的ip池中。要动态维护ip池。

 

  三:python3使用代理ip的方式

 

  以前我的python3使用代理ip也有格式,你爬取的是http用http,是https用https就行。

 

  四:异常处理

 

  再写爬虫的时候一定要对所有可能产生异常的操作进行try except的异常处理。异常又要注意是否为超时异常,还是ip不可用,过期的异常,还是操作dom树的时候产生的异常。不同的异常要采用不同的策略。(可用状态码,全局变量判断)。

 

  五:分析目标网站对ip的需求

 

  你需要设置ip池的最小和请求ip的个数不至于太大或太小,可以预先测试。打个比方你爬的网站同一个时段10个ip更换就不够了。你不至于开100个ip去爬吧,ip过期而没咋么用就是对资源的浪费。

 

  解决方向:

 

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

 

  设置全局的列表ipdate[],全局的一个msg{}字典(其实字典就是列表中随机选的一个ip和端口,只不过通过记录标记可以很好的进行删除操作)。

 

  将请求ip的操作添加到全局列表(数组)中写成一个loadip()函数,以便判断ip不够时候即使添加(列表extend方法了解下,不是append哦)。

 

  写一个随机选ip的函数getproxies(),更换proxies{}里面的内容。同时msg也要更换。注意python函数改变全局变量需要在函数里先global msg声明。每次进行http(s)请求前执行一次更新操作。

 

  所有的操作都在try excpet操作,对不同的异常采用不同处理。比如(有的因为ip异常没爬到需要从爬,而有的因为dom结构异常就需要跳过)。

 

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

上一篇:Python爬虫怎么减少被封?
下一篇:使用代理IP与User Agent实现隐藏

关闭
18076763811
动态IP