Suchmaschinen -Algorithmen verwenden häufig die Informationen aus Web-Seiten nehmen und ordnen Sie sie nach Beliebtheit. Diese Algorithmen werden oft als " Spinnen. " Eine Python- Programmierer kann eine Menge über Multithread-Programmierung , Regular Expression Pattern Matching und Web Datenabruf durch die Schaffung einer Spinne zu lernen. Sie können ein Python -Skript Spinne mit wenig mehr als den mitgelieferten Python-Bibliotheken und Dolmetscher starten. Things You
Python-Interpreter
brauchen anzeigen Weitere Anweisungen
1
Definieren Sie zwei reguläre Ausdrücke, um E-Mail -Adressen und Hyperlinks in den Code der Webseite übereinstimmen :
Import urllibimport threadingimport re
r = re.compile ( ' (? <= href \\ = \\ " mailto :) . * ? @ . * ? . [\\ w] { 0,3 } (? = \\ " ) ') # Mailsr1 = re.compile ( ' (? <= href \\ = \\" ) . * ? (? = \\ " ) ') # links
2
Definieren Sie eine Klasse Konstruktor, der eine Web -URL als Argument . Der Konstruktor wird die URL als Ausgangspunkt zu nehmen, dann beginnen die "Spider" -Klasse als separaten Thread :
Klasse Spider ( threading.Thread ) : def __ init__ (self, Anschrift): self.url = addressthreading.Thread.__init__ (Selbst-)
3
Definieren Sie die "run" -Methode, die , wann immer ein neuer Thread vom Typ " Spider" beginnt ausführt . Diese Methode verarbeitet die Web -Seite mit " urllib.urlopen " , zieht E-Mails aus dem Code mit dem "r" für reguläre Ausdrücke und speichert sie in einer Log-Datei . Es dauert dann die Hyperlinks und lädt die Informationen aus dieser URL , beginnend einen neuen Thread , um diese Web -Seite zu verarbeiten:
def run ( self):
source = urllib.urlopen ( self.url . ) read () = r.findall Mails (Quelle) Mails = list ( set ( Mails) ) log = open (' log.txt ', ' a') for i in Mails : Wenn re.match ("^ [ ,"! _.0 -9a- z- ] + @ ( . [ 0-9a -z ] [0 -9a- z- ] + ) + [az] { 2,4 } $ " , i) = None : Wenn (i + '\\ n') nicht in ( open (' log.txt ', ' r') readlines ().) : print ' Gespeichert :', ilog.write (i + '\\ n') count + = 1log.close () urls = r1.findall (Quelle) für url in urls : . Crawl ( url ) start ()
4
Führen Sie die Spinne Klasse durch den Aufruf eines neuen Thread vom Typ " Spider" und Zuführen es mit einem URL:
Spider ( ' www.google.com ') start ()
.