Python采集代理ip并判断是否可用和定时更新的方法
更新时间:2018年05月07日 11:05:16 作者:lilongsy
今天小编就为大家分享一篇Python采集代理ip并判断是否可用和定时更新的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
网上有很多免费的ip地址,都是可以使用的,但是如果手动来获取太麻烦,这里通过Python自动抓取,可以批量获取。
代码如下:
# -*- coding: utf-8 -*-
import re
import urllib2
import json
import os
import time
import socket
class 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解析库Beautiful Soup安装的详细步骤
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据,下面这篇文章主要给大家介绍了关于python解析库Beautiful Soup安装的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-04-04
详解Python中的__getitem__方法与slice对象的切片操作
Python中想要使类的实例像list一样使用下标,可以用__getitem__方法,而配合slice对象则可以实现list一样的切片,详解Python中的__getitem__方法与slice对象的切片操作2016-06-06
python字符串分割常用方法(str.split()和正则)
在Python中字符串是一种非常常见的数据类型,在实际应用中我们经常需要对字符串进行分割,以便对其中的内容进行处理,这篇文章主要给大家介绍了关于python字符串分割(str.split()和正则)的相关资料,需要的朋友可以参考下2023-11-11
Python2.7版os.path.isdir中文路径返回false的解决方法
这篇文章主要为大家详细介绍了Python2.7版os.path.isdir中文路径返回false的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-06-06


最新评论