Tecnología

Inicio

La programación de una araña de correo electrónico en Python

Los motores de búsqueda suelen utilizar algoritmos que toman información de las páginas web y clasificarlos 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, regular que coincide con el patrón de expresión y de datos de la Web ir a buscar mediante la creación de una araña. Puede iniciar una secuencia de comandos de Python araña con poco más que las bibliotecas Python incluidos y de intérprete.

Instrucciones

1 Definir dos expresiones regulares para que coincida con las direcciones de correo electrónico y los hipervínculos en el código de la página Web:

urllib importación
enhebrado de importación
import re

r = re.compile ( '(? <= href \ = \ "mailto

:).? @.?. [\ w] {0,3} (? = \")') # Mails
r1 = re.compile ( '(? <= href \ = \ "). *? (?) = \"') # Enlaces

2 Definir un constructor de la clase que tiene una URL de la página Web como su argumento. El constructor tomará la dirección URL como punto de partida, y luego comience la clase "araña" como un hilo separado:

clase de araña (threading.Thread):

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

3 Definir el método "run", que 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 mensajes de correo electrónico desde el 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 descarga la información desde esa URL, iniciar un nuevo hilo para procesar la página Web:

def run (auto):

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-]+@([0-9a-z][0-9a-z-]+.)+[az]{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 suministrarlo con una URL:

Araña ( 'www.google.com'). Start ()

Consejos y advertencias

  • Este ejemplo es sólo para fines académicos / educativos, como demostraciones de coincidencia de patrones, roscado y capacidades Web del lenguaje Python.