.
     
» Ajax Links          

extraer emails con python

3 Abr 2009 | Escrito por: lopz | En: Python
Extraer emails de una página web usando python

Hola

Bueno, mucha gente se pregunta como realizar un spider o crawler para obtener datos de una página web de forma automática y en realidad no es tan difícil, solo bastaría con ir navegando por las urls, pero en este caso mostraremos como obtener cierto tipo de datos que nos interesan de la web, y por ahora mostraremos como extraer los mails de una página web o lo mismo es válido para un fichero de texto donde tengas emails y quieras tenerlos algo mas organizado o hasta en una base de datos.

La idea de este script es solo mostrar con que facilidad se puede hacer esto usando python, no quiero incitar a la gente que haga spam ni nada parecido, tampoco que lo usen para esos fines, y bueno tampoco es que yo sea el primero en postear algo así, y es que hay una cosa, cuando un usuario n00b quiere hacer spam, entonces este buscará un script que lo haga todo completo, y como este no es su fin osea que no le servirá, y si es un usuario avanzado el puede usarlo para estos fines, pero es obvio que el mismo podría hacerse uno en cualquier lenguaje, a su gusto y mucho mejor que este, osea que de cualquier forma no molestará a nadie :D



Code:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#
#      PyImg2Text.py
#
#      Copyright 2009 Jorge J. Lopez C. <lowlifebob[arroba]gmail.com>
#
#      This program is free software; you can redistribute it and/or modify
#      it under the terms of the GNU General Public License as published by
#      the Free Software Foundation; either version 2 of the License, or
#      (at your option) any later version.
#
#      This program is distributed in the hope that it will be useful,
#      but WITHOUT ANY WARRANTY; without even the implied warranty of
#      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#      GNU General Public License for more details.
#
#      You should have received a copy of the GNU General Public License
#      along with this program; if not, write to the Free Software
#      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#      MA 02110-1301, USA.

import httplib
import re

const_dom = "www.nodo50.org"
const_url = "/cbc/lista.htm"
const_mailsrch = re.compile(r'[w-][w-.]+@[w-][w-.]+[a-zA-Z]{1,4}')

def download(dom, url):
   headers = {
            "User-Agent": "Mozilla/5.0 (X11; U; Linux i686; es-ES; \
             rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3",
            "Accept": "text/html,application/xhtml+xml,application/ \
            xml;q=0.9,*/*;q=0.8",
            "Accept-Language": "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3",
            "Accept-Charset": "UTF-8,*",
            "Keep-Alive": "300",
            "Proxy-Connection": "keep-alive",
            }

   # conectamos con el servidor
   conn = httplib.HTTPConnection(dom, 80)
   # hacemos la peticion
   conn.request ("GET", url, None, headers)
   resp = conn.getresponse()
   return resp


def main():
   mails = []
   db = open('emails.txt', 'a')
   xml = download(const_dom, const_url).read()
   mails.extend(const_mailsrch.findall(xml))   
   
   for mail in mails:
      db.write(mail + 'n')
      print "Email:", mail
   db.close()

if __name__ == '__main__':
   main()


Como pueden ver hemos obtenido todos los emails de una página web y guardado en un fichero de texto plano, y como les decía, podíamos hacerlo a una DB, etc
la página que elegí es al azar, osea que no digan que tengo algo contra los dueños de esos emails.

Y como siempre a continuación pongo un SS del script funcionando




PD me olvidaba de algo, aquí uso expresiones regulares para extraer los emails, y es una bien sencilla, funciona como debe ser, pero NO ES CORRECTA, osea pueden haber una y muchas excepciones donde habrá un error al poner un email como válido o inválido, si quieren pueden buscar las regex para validar un email y se asombrarán lo complicado que resulta validarlo.

Saludos!


   

 
lopz9 Abr 2009
Hola
jeje, pero si es una tontería el código, no ves que la licencia ocupa más líneas que el propio script ? xD

Saludos!

th3r0rn7 Abr 2009
No mames pinche juaker, buen codigo man, como siempre bien leet u_u

  Pagina 1 de 1
 

Envia tu Comentario:
Los comentarios ofensivos o fuera de lugar seran borrados.
BBcode: on
Smilies: on
Nick:


smile wink surprised tongue lol sad angry cry 



Status: Comentario aun no enviado


Powered by MySql' Powered by PHP XHTML Valido CSS Valido

Tiempo de carga del servidor: 0.0073