Los motores de búsqueda suelen utilizar algoritmos que toman información de las páginas web y los clasifican de acuerdo a la popularidad. Estos algoritmos son a menudo llamados "arañas ". Un programador Python puede aprender mucho acerca de la programación multihilo , expresiones regulares coincidencia de patrones y datos de la Web ir a buscar la creación de una araña. Puede iniciar una secuencia de comandos Python araña con poco más que las bibliotecas y el intérprete de Python incluidos. Cosas que necesitará
Python intérprete
Mostrar más instrucciones
1
Definir dos expresiones regulares para hacer coincidir las direcciones de correo electrónico e hipervínculos en el código de la página Web:
importación urllibimport threadingimport re
r = re.compile ( ' ( ? < href = \\ = \\ " mailto :) . * ? @ . * ? . [ \\ w ] {0,3 } ( ? = \\ ") ') # Mailsr1 = re.compile ( ' ( ? < href = \\ = \\ ") . * ? ( ? = \\ ") ') # Links
2
Definir un constructor de la clase que tiene una página web URL como argumento. El constructor tomará la URL como punto de partida , a continuación, comenzar la clase "Spider ", como un hilo separado :
clase
Spider ( threading.Thread ) : def __ init__ (self, dirección): self.url = addressthreading.Thread.__init__ (auto )
3
Definir el método "run" , que se ejecuta cada vez que se inicia un nuevo hilo de tipo " araña " . Este método procesa la página web con " urllib.urlopen " , tira de correos electrónicos de un código mediante el uso de la "r " de expresiones regulares y los almacena en un archivo de registro . A continuación, toma los hipervínculos y las descargas de la información de esa URL , comenzando un nuevo thread para procesar la página Web:
def run ( self):
fuente
= urllib.urlopen ( self.url . ) read ( ) = mails (fuente ) mails r.findall = list ( set ( 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) = None: si ( i + '\\ n' ) no ( abiertas ( ' log.txt ', ' r') readlines (). ): print ' Guardado :', ilog.write ( i + '\\ n' ) cuenta + = 1log.close () urls = r1.findall (fuente ) de uRL en uRL : . Crawl ( url ) start ()
4
Ejecutar la clase araña llamando a un nuevo hilo de tipo " araña " y el suministro de con una URL :
Spider ( " www.google.com " ) start ()
.