虚位以待(AD)
虚位以待(AD)
首页 > 脚本专栏 > python > Python采集代理ip并判断是否可用和定时更新的方法

Python采集代理ip并判断是否可用和定时更新的方法
类别:python   作者:码皇   来源:互联网   点击:

今天小编就为大家分享一篇Python采集代理ip并判断是否可用和定时更新的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

网上有很多免费的ip地址,都是可以使用的,但是如果手动来获取太麻烦,这里通过Python自动抓取,可以批量获取。

代码如下:

    # -*- coding: utf-8 -*-import reimport urllib2import jsonimport osimport timeimport socketclass ProxyIp(object): def __init__(self): self.path = os.path.split(os.path.realpath(__file__))[0] # Get latest proxy ip and download to json def update_ip(self): print 'Update Ip' url = 'http://www.ip3366.net/free/' req = urllib2.Request(url) response = urllib2.urlopen(req) matches = re.findall( ur'(d+.d+.d+.d+)</td>s+<td>(d+)</td>s+<td>.*?</td>s+<td>(HTTPS?)</td>', response.read(), re.I ) ls = [] for match in matches: if self.is_open(match[0], match[1]): ls.append({
    'ip':match[0], 'port':match[1], 'protocol': match[2]}
    ) with open('%s/ip.json' % self.path, 'w') as f: json.dump(ls, f) return ls # whether the ips is last or old. def is_last(self): m_time = int(os.path.getmtime('%s/ip.json' % self.path)) now_time = int(time.time()) return (now_time - m_time) > 60*60*4 # 4 hours @staticmethod def is_open(ip, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(ip, int(port)) return True except: print 'Faild IP: %s:%s' % (ip, port) return False def get_proxy_ips(self): if not self.is_last(): return self.update_ip() else: with open('%s/ip.json' % self.path, 'r') as f: return json.load(f)

以上这篇Python采集代理ip并判断是否可用和定时更新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • Python爬虫代理IP池实现方法
  • Python爬虫设置代理IP的方法(爬虫技巧)
  • Python爬虫抓取代理IP并检验可用性的实例
  • 利用Python爬取可用的代理IP
  • Python实现检测代理IP是否可以翻墙
  • python扫描proxy并获取可用代理ip的实例
相关热词搜索: python 采集代理ip