Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Codebeispiel zum Erstellen eines Webseiten-Traffic-Tools

Python-Codebeispiel zum Erstellen eines Webseiten-Traffic-Tools

Y2J
Y2JOriginal
2017-05-02 15:47:552609Durchsuche

Dieser Artikel stellt Ihnen ein kleines Tool vor, das mit Python erstellt wurde und den Webseitenverkehr glätten kann. Der detaillierte Code ist Ihnen beigefügt.

Vorbereitung

Erforderliche Umgebung:

Python3

Starten

Implementieren Sie zunächst eine einfache Version direkt Der obige Code:

import urllib.request
import urllib.error
#创建get方法
def get(url):
 code=urllib.request.urlopen(url).code
 return code
if __name__ == '__main__':
#设置一些基本属性
 url = "http://shua.jb51.net"
 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
 headers = {'User-Agent':user_agent}
 req = urllib.request.Request(url, headers=headers)
 #记录次数
 i = 1
 while 1: 
   code = get(url)
   print('访问:'+str(code))
   i = i+1

ist einfach und grob und die IP bleibt unverändert. Es ist leicht, es unten zu finden Proxy-Funktion hinzufügen

Fügen Sie den folgenden Code zur get-Methode hinzu:

Ändern Sie die Hauptmethode:

random_proxy = random.choice(proxies)
proxy_support = urllib.request.ProxyHandler({"http":random_proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
Das ist fast dasselbe, Wenn die Seite jedoch nicht geöffnet werden kann oder der Agent ausfällt, wird das Programm automatisch beendet. Als nächstes fügen wir die Ausnahmebehandlungsfunktion

if __name__ == '__main__':
 url = "http://shua.jb51.net"
 #添加代理列表,可以自行去百度获取
 proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
 headers = {'User-Agent':user_agent}
 req = urllib.request.Request(url, headers=headers)
 i = 1
 while 1:
   #添加参数
   code = get(url,proxies)
   print('第'+str(i)+'次代理访问:'+str(code))
   i = i+1

Ausnahmebehandlung
hinzu

Definieren Sie die E-Mail-Methode mit E-Mail-Erinnerung senden

Dann ändern wir die Hauptmethode:

def mail(txt):
 _user = "你的账号"
 _pwd = "你的密码"
 _to = "收件账号"
 msg = MIMEText(txt, 'plain', 'utf-8')
 #标题
 msg["Subject"] = "代理失效!"
 msg["From"] = _user
 msg["To"] = _to

 try:
   #这里我用的qq邮箱
   s = smtplib.SMTP_SSL("smtp.qq.com", 465)
   s.login(_user, _pwd)
   s.sendmail(_user, _to, msg.as_string())
   s.quit()
   print("Success!")

 except smtplib.SMTPException as e:
   print("Falied,%s" % e)
Fertig!

if __name__ == '__main__':
 url = "http://shua.jb51.net"
 proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
 headers = {'User-Agent':user_agent}
 req = urllib.request.Request(url, headers=headers)
 i = 1
 while 1:
   try:
     code = get(url,proxies)
     print('第'+str(i)+'次代理访问:'+str(code))
     i = i+1
   except urllib.error.HTTPError as e:
     print(e.code)
      #添加mail方法
     mail(e.code)
   except urllib.error.URLError as err:
     print(err.reason)
      #添加mail方法
     mail(err.reason)
Fazit


Der Code ist nur 50 Zeilen lang und das Programm kann verbessert werden:

Zum Beispiel: Agentenliste automatisch abrufen, hinzufügen eine Schnittstelle und erweitern Sie sie um Multithreading usw.


Abschließend werde ich die Arbeit eines anderen Freundes mit Ihnen teilen

Wenn es nach dem Testen mehr als zwei Threads gibt, Auf dem Server wird ein 503-Fehler auftreten, also 2 Threads. Genau richtig

Das obige ist der detaillierte Inhalt vonPython-Codebeispiel zum Erstellen eines Webseiten-Traffic-Tools. 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