ubiquitour.com

Cómo programar un Email Spider en Python

Buscadores a menudo uso algoritmos que toman información de páginas Web y ordénelos según popularidad. Estos algoritmos se les llama "arañas". Un programador de Python puede aprender mucho sobre programación multiproceso, coincidencia de patrón de expresión regular y Web recuperación de datos mediante la creación de una araña. Puede iniciar una secuencia de comandos de Python araña con poco más que el incluidas bibliotecas de Python e intérprete.

Instrucciones

1 Definir expresiones regulares dos direcciones de correo electrónico y enlaces en el código de la Página Web:

Import urllibimportación de roscarimportación de re

¿r = re.compile ('(?<=href\=\"mailto:).? @.?. [\w] {0,3} (? = \ ")') Correos #¿R1 = re.compile ('(? < = href\=\").*? (? = \ ") Enlaces de #')

2 Definir un constructor de clase que tiene una dirección URL de la Página Web como su argumento. El constructor toma la URL como punto de partida, y luego comenzar la clase de "Araña" como un subproceso independiente:

clase de araña (rosca. Hilo de rosca):

def __init__(self,address): self.url = address threading.Thread.__init__ ( self )3

Definir el método "run", que se ejecuta cada vez que un nuevo hilo de tipo "Araña" comienza. Este método procesa la Página Web "urllib.urlopen", tira de e-mails desde el código mediante el uso de la expresión regular "r" y los almacena en un archivo de registro. Luego toma los enlaces y descargas la información de la URL, a partir de un nuevo hilo para procesar la Página Web:

DEF run(self):

source = urllib.urlopen(self.url).read() mails = r.findall(source) mails = list(set(mails)) log = open('log.txt','a') for i in mails: if re.match(&quot;^[_.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$&quot;, i) != None: if (i+'\n') not in (open('log.txt','r').readlines()): print 'Saved: ',i log.write(i+'\n') count += 1 log.close() urls = r1.findall(source) for url in urls: Crawl(url).start()4

Ejecutar la clase de araña llamando a un nuevo hilo de tipo "Araña" y suministrando una dirección URL:

Spider('www.Google.com').Start()

Consejos y advertencias

  • Este ejemplo es para fines académicos/educativos, como demostraciones de coincidencia de patrón, threading y capacidades Web del lenguaje Python.