I motori di ricerca spesso utilizzano algoritmi che prendono le informazioni da pagine Web e classificare in base alla popolarità . Questi algoritmi sono spesso chiamati "ragni . " Un programmatore Python può imparare molto sulla programmazione multithread , regolare pattern matching espressione e di dati Recupero Web con la creazione di un ragno . È possibile avviare uno script Python ragno con poco più che le librerie Python inclusi e interprete . Cose che ti serviranno
interprete Python
Show More Istruzioni
1
definire due espressioni regolari a indirizzi email e collegamenti ipertestuali nel codice della pagina web:
importazione urllibimport threadingimport ri
r = re.compile ( ' ( ? < = href \\ = \\ "mailto :) . * ? @ . * ? . [ \\ w ] { 0,3 } ( ? = \\ " ) ') # Mailsr1 = re.compile ( ' ( ? < = href \\ = \\ " ) * ? ( ? = \\ ") ' . ) # Links
2
Definire un costruttore della classe che prende un URL della pagina Web come argomento . Il costruttore avrà l'URL come punto di partenza , poi iniziare la classe "Spider ", come un thread separato :
classe
Spider ( threading.Thread ) : def __ init__ (self , indirizzo ) : self.url = addressthreading.Thread.__init__ (auto )
3
Definire il metodo "run" , che esegue ogni volta che inizia un nuovo thread di tipo " ragno " . Questo metodo elabora la pagina Web con " urllib.urlopen " , tira email da parte del codice utilizzando la "r" espressione regolare e li memorizza in un file di log . Prende quindi i collegamenti ipertestuali e scarica le informazioni da questo URL , iniziando un nuovo thread per elaborare la pagina web:
def run ( self):
fonte
= urllib.urlopen ( self.url . ) read () mail = r.findall ( fonte ) mail = lista ( set ( mail) ) log = open (' log.txt ', ' a') for i in mails : se re.match ( "^ [ ,"! _.0 - 9a - z - ] + @ ( . [ 0 -9A - Z ] [ 0 - 9a - z - ] + ) + [ az] { 2,4} $ " , i) = None : se ( i + '\\ n' ) non in ( open (' log.txt ', ' r' ) readlines (). ) : print ' Salvato : ' , ilog.write (i + '\\ n' ) count + = 1log.close ( ) URL = r1.findall ( sorgente) per URL in URL : . Crawl ( url ) inizio ( ) economici 4
eseguire la classe Spider chiamando un nuovo thread di tipo " ragno " e la fornitura di con un URL :
Spider ( ' www.google.com ') start ( ) per
.