miércoles, 15 de octubre de 2014

PYTHON: CREANDO NUESTRA HERRAMIENTA DE WEB SCRAPING [II]

Continuando con nuestra tarea para la construcción de nuestro script. Añadiremos en esta entrada la extracción de e-mails usando expresiones regulares.

EXTRAYENDO E-MAILS.

En esta ocasión anexaremos a nuestros script una función para extraer los e-mails que se encuentren en una pagina dada. La función a anexar es la siguiente:

1
2
3
4
5
6
7
def Extraer_Emails(HTML):
    try:
        emails = re.findall(PATRON_EMAIL, HTML)
        return emails
    except Exception, e:
        print "[ERROR: Extraer_Emails(HTML)] - ",e
        sys.exit(1)

Para su correcto funcionamiento debemos agregar la expresión regular correspondiente:

1
PATRON_EMAIL= re.compile("[-a-zA-Z0-9._]+@[-a-zA-Z0-9_]+.[a-zA-Z0-9_.]+")

En el script anterior dejamos preparado el escenario para anexar el texto de ayuda en la función Mostrar_Ayuda(). No creo que eso tenga mucha complicación, lo menciono como recordatorio encaso de que se quiera ir modificando para tenerlo todo en un solo script. Y claro, tendremos que modificar nuestro manejo de argumentos según como queramos usarlo. En mi caso particular lo acomode para que la ejecución sea de la siguiente forma:

python WebScraping.py -url -e <URL>

Esto por que se me ocurre que a futuro pueda anexar una función para ademas de extraer datos de paginas, pueda también extraerla de archivos de texto plano, excel, etc., y pueda mandarlo llamar de la siguiente manera:

python WebScraping.py -archivo -e <RUTA DE ARCHIVO>

Eso claro, pensando muy a futuro. Queda a consideración de cada quien. Una vez anexada la función al script procederemos a probar buscando alguna URL que contenga correos, ejecutando el siguiente Google Dork:


Una vez obtenidos los resultados tomaremos la versión en cache de alguno de los resultados para poder tomar los datos desde URL y procederemos a ejecutar el script:



Observando que efectivamente se extrajeron los correos de la pagina. La lista en este caso es un poco larga pero muestra correos repetidos debido a que, bueno, se mostraban repetidos en la pagina. En un futuro trabajaremos sobre este detalle para que nos muestra solo un correo e ignore las repeticiones.

NOTAS:

-Es importante prestarle algo de tiempo al estudio de las expresiones regulares ya que serán la llave para la creación de  patrones que nos permitan extraer lo que necesitemos.
-En la próxima entrada analizaremos la extracción de links y el uso de la librería Beautiful Soup como alternativa.

REFERENCIAS.

-https://docs.python.org/2/howto/regex.html
-http://whatis.techtarget.com/definition/Google-dork-query


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.