Les moteurs de recherche utilisent souvent des algorithmes qui prennent informations de pages web et de les classer en fonction de leur popularité . Ces algorithmes sont souvent appelés « araignées ». Un programmeur Python peut apprendre beaucoup de choses sur la programmation multithread , expression régulière pattern matching et de données Web aller chercher en créant une araignée. Vous pouvez démarrer un script d'araignée Python avec un peu plus les bibliothèques Python inclus et interprète . Choses que vous devez
interpréteur Python
Afficher plus Instructions
1
définir deux expressions régulières pour correspondre à des adresses électroniques et des hyperliens dans le code de la page Web :
importation urllibimport threadingimport re
r = re.compile ('( ? < = href \\ = \\ " mailto :) . * ? @ *. ? . [ \\ w ] {0,3 } ( ? = \\ " ) ') # Mailsr1 = re.compile (' ( ? < = href \\ = \\" ) . * ? ( ? = \\ " ) ') # Liens
2
définir un constructeur de classe qui prend une URL de page Web comme argument. Le constructeur aura l'URL comme point de départ , puis commencer la classe "Spider " comme un thread séparé :
classe
Spider ( threading.Thread ) : def __ init__ (self, adresse): self.url = addressthreading.Thread.__init__ (auto )
3
définir la méthode "run" , qui exécute à chaque fois un nouveau fil de type « araignée » commence . Cette méthode traite la page Web avec " urllib.urlopen " , tire emails à partir du code en utilisant le "r" expression régulière et les stocke dans un fichier journal . Il prend alors les hyperliens et télécharge les informations de cette URL , en commençant un nouveau thread pour traiter cette page Web :
terme de def (self):
source de
= urllib.urlopen ( self.url . ) Read () = mails r.findall ( source) = mails liste (ensemble ( mails ) ) log = open (' log.txt' , 'a') for i in mails : si re.match ( "^ [ ,"! _.0 -9a -z- ] + @ ( . [ 0-9a- z] [ 0-9a -z- ] +) + [az] { 2,4 } $ " , i) = Aucun: si (i + '\\ n' ) pas ( open (' log.txt ', ' r') readlines (). ) : print ' a économisé: ' , ilog.write (i + '\\ n' ) count + = 1log.close () urls = r1.findall (source) pour l'URL dans urls : . Crawl (url) start ()
4
Exécuter la classe d'araignée en appelant un nouveau fil de type " Spider" et la fourniture de avec une URL:
Spider ( « www.google.com ») start ()
.