이 글은 주로 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은 블로그에 업로드된 QQ 스크린샷 파일을 수집합니다
위 내용은 Python은 프록시 IP를 수집하여 사용 가능한지 확인하고 정기적으로 업데이트합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!