Python采集代理ip并判断是否可用和定时更新的方法
网上有很多免费的ip地址,都是可以使用的,但是如果手动来获取太麻烦,这里通过Python自动抓取,可以批量获取。
代码如下:
#-*-coding:utf-8-*- importre importurllib2 importjson importos importtime importsocket classProxyIp(object): def__init__(self): self.path=os.path.split(os.path.realpath(__file__))[0] #Getlatestproxyipanddownloadtojson defupdate_ip(self): print'UpdateIp' url='http://www.ip3366.net/free/' req=urllib2.Request(url) response=urllib2.urlopen(req) matches=re.findall( ur'(\d+.\d+.\d+.\d+)\s+(\d+) \s+.*? \s+(HTTPS?) ', response.read(), re.I ) ls=[] formatchinmatches: ifself.is_open(match[0],match[1]): ls.append({'ip':match[0],'port':match[1],'protocol':match[2]}) withopen('%s/ip.json'%self.path,'w')asf: json.dump(ls,f) returnls #whethertheipsislastorold. defis_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#4hours @staticmethod defis_open(ip,port): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: s.connect(ip,int(port)) returnTrue except: print'FaildIP:%s:%s'%(ip,port) returnFalse defget_proxy_ips(self): ifnotself.is_last(): returnself.update_ip() else: withopen('%s/ip.json'%self.path,'r')asf: returnjson.load(f)
以上这篇Python采集代理ip并判断是否可用和定时更新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。