Zoekmachines gebruiken vaak algoritmen die informatie te nemen van webpagina's en te rangschikken volgens populariteit . Deze algoritmen worden vaak " spinnen. " Een Python programmeur kan veel over multithreaded programmeren , reguliere expressie patroonherkenning en Web data halen door het creëren van een spin te leren . U kunt een Python spin script te starten met weinig meer dan de meegeleverde Python bibliotheken en tolk . Wat je nodig hebt Python-interpreter Toon Meer Aanwijzingen 1 Definieer twee reguliere expressies om e-mailadressen en hyperlinks passen in de code van de webpagina : import urllibimport threadingimport re r = re.compile ( ' ( ? < = href \\ = \\ " mailto :) . * ? @ . * ? . [ \\ w ] { 0,3 } ( ? = \\ " ) " ) # Mailsr1 = re.compile ( ' ( ? < = href \\ = \\ " ) . * ? ( ? = \\ " ) " ) # Links 2 Definieer een klasse constructor die een webpagina URL neemt als argument. De aannemer zal de URL nemen als uitgangspunt , dan is de " Spider " class beginnen als een aparte thread : klasse Spider ( threading.Thread ) : def __ init__ (zelf , adres ) : self.url = addressthreading.Thread.__init__ (zelf ) 3 Definieer de " run " -methode , die wordt uitgevoerd wanneer er een nieuwe draad van het type " Spider " begint . Deze methode verwerkt de webpagina met " urllib.urlopen " , trekt e-mails van de code met behulp van de " r" reguliere expressie en slaat ze op in een logbestand . Het neemt dan de hyperlinks en downloads van de informatie van die URL , het starten van een nieuwe draad naar die webpagina te verwerken : def run (zelf ) : bron = urllib.urlopen ( self.url . ) gelezen ( ) mails = r.findall ( bron ) mails = list ( set ( mails ) ) log = open ( ' log.txt ' , ' a ' ) voor i in mails : als re.match ( " ^ [ ,"! _.0 - 9a - z - ] + @ ( . [ 0 - 9a - z ] [ 0 - 9a - z - ] + ) + [ az ] { 2,4 } $ " , i ) = Geen: indien ( i + ' \\ n' ) niet in (open ( ' log.txt ' , ' r' ) readlines ( ) . ) : print ' Saved : ' , ilog.write ( i + ' \\ n' ) count + = 1log.close ( ) urls = r1.findall ( bron ) voor de url in urls : . Crawl ( url ) start ( ) 4 Voer de Spider -klasse door te bellen naar een nieuwe draad van het type " Spider " en het leveren van het met een URL : Spider ( ' www.google.com ' ) start ( ) op . |