13 mayo, 2014

Python,- HTML Crawler E-mail Extractor Newbie Style

Hace unas semanas Francisco Javier me dio la oportunidad de formar parte de esta comunidad y de escribir algún articulo. Así que, empecé a curiosear la pagina, a ver perfiles de los otros autores y ver cual era la mejor manera de empezar a escribir aquí. La verdad es que no quería publicar nada hasta que no tuviera una buena idea y viendo el nivel de mis compañeros posiblemente sea el mas Newbie de todos. Suponiendo esto y puestos a lanzar la novatada, he decidido reutilizar dos script que hice con Python para mi blog y me parece que puede quedar genial. 


Scripts usados:

Lo que queremos es un script que pueda leer el código fuente de una pagina y la interprete guardando los correos electrónicos en un .txt, en el caso de detectar alguno en el código, o, si encuentra un enlace, prosiga su búsqueda en la siguiente pagina y vuelva a comprobar si hay algún correo. Bueno,  por si no queda claro aquí os dejo el código: 

import re
import urllib

web =  raw_input("pega aqui la Url: ")
emails = []

patron= re.compile('''href=["'](.[^"']+)["']''')
patron2= re.compile("[-a-zA-Z0-9._]+@[-a-zA-Z0-9_]+.[a-zA-Z0-9_.]+")

busqueda = re.findall(patron, urllib.urlopen(web).read())
busqueda2= re.findall(patron2,urllib.urlopen(web).read())

emails.append(busqueda2)
d1 =  str(busqueda2)
ListaEmails = open('correos.txt','a+')
ListaEmails.write("--> "+ d1 +" <--")
ListaEmails.close()

for i in busqueda:
busqueda3 = re.findall(patron2,urllib.urlopen(i).read())
emails.append(busqueda3)
d2 =  str(busqueda3)
ListaEmails = open('correos.txt','a+')
ListaEmails.write("--> "+ d2 +" <--")
ListaEmails.close()
busqueda4 = re.findall(patron, urllib.urlopen(i).read())

for e in busqueda4:
busqueda5 = re.findall(patron2,urllib.urlopen(e).read())
emails.append(busqueda5)
d3 =  str(busqueda5)
ListaEmails = open('correos.txt','a+')
ListaEmails.write("--> "+ d3 +" <--")
ListaEmails.close()

print "Correos Guardadas con Exito."

Si, es una forma muy chapurrera de hacerlo, pero soy un Newbie y mas con Python. Así que, estoy abierto a criticas y a posibles mejoras. 

Lo he probado con esta web, una forma genial para garantizar mi permanencia, y este a sido el resultado: 


Como veis el script ha encontrado, aparte del noreply de blogger, el correo electrónico de Francisco Javier varias veces y el de dergli. También habréis visto en el código el programa se basa en el siguiente patrón para usar la librería re (Regular Expresions) y dar con los correos [-a-zA-Z0-9._]+@[-a-zA-Z0-9_]+.[a-zA-Z0-9_.]+ Lo cual comporta que si alguien ha escrito, como es en este caso, tod@s se nos mete en la lista. 

También en la ejecución de este script después de introducir la url de la pagina web, al encontrar una url la cual no pueda abrir, el programa parará de guardar correos electrónicos mostrándonos el siguiente problema. 


La verdad es que me lo he pasado bastante bien jugando con este script y creo que si le dedico un poco mas de tiempo puede salir algo muy chulo. Para los que queráis el script os dejo en enlace a GitHub aquí abajo: 
Acepto criticas y/o propuestas de mejora. 

Sed Buenos con esto ;) 

0 comentarios:

Publicar un comentario