Vorwort
Nehmen Sie als Beispiel eine kürzlich entdeckte kostenlose Proxy-IP-Website: http://www.xicidaili.com/nn/. Bei der Verwendung habe ich festgestellt, dass viele IPs nicht verwendet werden können.
Also habe ich ein Skript in Python geschrieben, das die verfügbaren Proxy-IPs erkennen kann.
Das Skript lautet wie folgt:
#encoding=utf8 import urllib2 from bs4 import BeautifulSoup import urllib import socket User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0' header = {} header['User-Agent'] = User_Agent ''' 获取所有代理IP地址 ''' def getProxyIp(): proxy = [] for i in range(1,2): try: url = 'http://www.xicidaili.com/nn/'+str(i) req = urllib2.Request(url,headers=header) res = urllib2.urlopen(req).read() soup = BeautifulSoup(res) ips = soup.findAll('tr') for x in range(1,len(ips)): ip = ips[x] tds = ip.findAll("td") ip_temp = tds[1].contents[0]+"\t"+tds[2].contents[0] proxy.append(ip_temp) except: continue return proxy ''' 验证获得的代理IP地址是否可用 ''' def validateIp(proxy): url = "http://ip.chinaz.com/getip.aspx" f = open("E:\ip.txt","w") socket.setdefaulttimeout(3) for i in range(0,len(proxy)): try: ip = proxy[i].strip().split("\t") proxy_host = "http://"+ip[0]+":"+ip[1] proxy_temp = {"http":proxy_host} res = urllib.urlopen(url,proxies=proxy_temp).read() f.write(proxy[i]+'\n') print proxy[i] except Exception,e: continue f.close() if __name__ == '__main__': proxy = getProxyIp() validateIp(proxy)
Öffnen Sie nach erfolgreicher Ausführung die Datei unter Laufwerk E und Sie können sehen, dass die folgenden Proxy-IP-Adressen und -Ports verfügbar sind:
Zusammenfassung
Das ist nur so die erste Crawl-IP-Adresse der Seite. Bei Bedarf können Sie noch einige weitere Seiten crawlen. Gleichzeitig wird die Website von Zeit zu Zeit aktualisiert, daher wird empfohlen, beim Crawlen nur die ersten paar Seiten zu crawlen. Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle hilfreich ist, die den Umgang mit Python erlernen.
Weitere Artikel zu Proxy-IPs, die für das Python-Crawling verfügbar sind, finden Sie auf der chinesischen PHP-Website!