Python采集代理ip并判断是否可用和定时更新
来源:互联网 发布:watershed算法原理 编辑:程序博客网 时间:2024/06/06 17:01
网上有很多免费的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)
阅读全文
0 0
- Python采集代理ip并判断是否可用和定时更新
- 怎样快速判断代理ip是否可用
- python验证IP代理是否可用
- 从西刺代理爬取代理ip,并验证是否可用
- c#编写检测代理IP是否可用
- C#自动更换IE代理IP并判断代理是否可连接网络
- 【Python脚本】-Python查找可用代理IP
- 【python】采集免费代理ip并验证可用性后存储到文件
- 测试ip是否可用(ip代理时)
- 判断ip 是否正确 python
- 判断使用的代理IP是否有用
- 批量检查代理ip是否可用 curl-multi php检测ip代理是否有效
- python 爬取西刺免费代理ip 并使用telnetlib.Telnet验证是否有效
- #如何用ping的方法验证代理IP是否可用
- 抓取西刺代理IP+验证是否可用+存储mongodb
- app判断当前网络是否可用并开启wifi和开启GPRS
- Python中抓取代理IP并测试
- iOS判断app在appstore是否有可用的更新
- DOM扩展的两个常用方法
- 初识MVP,简单Demo
- 人生思考--碌碌无为的一天
- A链接的使用以及移动开发兼容
- HDU 1896 Stones
- Python采集代理ip并判断是否可用和定时更新
- How to use a man page Faster than a Google search
- JS闭包
- BZOJ 3166: [Heoi2013]Alo 可持久化字典树
- HDU1061 Rightmost Digit
- 数据存储(4):Android数据库的操作,SQLiteOpenHelper类的使用
- java.sql.SQLException: The user specified as a definer ('myroot'@'%') does not exist
- 卷积神经网络
- MySql中的时间函数