Heim >Backend-Entwicklung >Python-Tutorial >Python sammelt die Proxy-IP, ermittelt, ob sie verfügbar ist, und aktualisiert sie regelmäßig

Python sammelt die Proxy-IP, ermittelt, ob sie verfügbar ist, und aktualisiert sie regelmäßig

不言
不言Original
2018-05-07 11:58:162496Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zum Sammeln von Proxy-IP in Python vor und beurteilt, ob sie verfügbar ist und regelmäßig aktualisiert wird. Jetzt kann ich sie mit Ihnen teilen

Es ist online verfügbar. Es sind viele kostenlose IP-Adressen verfügbar. Wenn es jedoch zu mühsam ist, sie manuell zu erhalten, können wir sie automatisch über Python erfassen und stapelweise abrufen.

Der Code lautet wie folgt:

# -*- 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&#39;(\d+.\d+.\d+.\d+)</td>\s+<td>(\d+)</td>\s+<td>.*?</td>\s+<td>(HTTPS?)</td>&#39;,
      response.read(),
      re.I
    )
    ls = []
    for match in matches:
      if self.is_open(match[0], match[1]):
        ls.append({&#39;ip&#39;:match[0], &#39;port&#39;:match[1], &#39;protocol&#39;: match[2]})
    with open(&#39;%s/ip.json&#39; % self.path, &#39;w&#39;) 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(&#39;%s/ip.json&#39; % 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 &#39;Faild IP: %s:%s&#39; % (ip, port)
      return False
  def get_proxy_ips(self):
    if not self.is_last():
      return self.update_ip()
    else:
      with open(&#39;%s/ip.json&#39; % self.path, &#39;r&#39;) as f:
        return json.load(f)

Verwandte Empfehlungen:

Python-Sammlung – Datenspeicherung

Python sammelt in Blogs hochgeladene QQ-Screenshot-Dateien

Das obige ist der detaillierte Inhalt vonPython sammelt die Proxy-IP, ermittelt, ob sie verfügbar ist, und aktualisiert sie regelmäßig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn