Proyecto FaceScraped- Extractor de imágenes de perfiles de Facebook

Hola amigos de Internet, aquí su amigos Luis. Les doy
nuevamente la bienvenida a Mi Diario Python. En el día de hoy les traigo un
proyecto que de seguro les gustara mucho, no solo por su eficiencia, si no por
su gran utilidad.
Proyecto
FaceScraped:

“FaceScraped”, ese el nombre con el que he bautizado al
proyecto. Antes de comenzar, quisiera mencionar la utilidad de “FaceScraped”.

Tal vez algunos aquí ya han trabajado con “Visión por
computadora”, estos software que son capaces de mirar y entender las imágenes.
Estos son muy usados para la detección de rostros y el reconocimiento facial.
Pues estos software, utilizan algoritmo matemáticos capaces de aprender de los
datos, estos algoritmo son conocidos como neuronas artificiales. Bueno, estas
neuronas necesitan entradas, los cuales son datos de aprendizajes, las
neuronas, igual que cualquier niño aprendiendo, deben de ver muchas imágenes,
ya que estas neuronas aprenderán de estas imágenes. 

Una de las partes más
tediosas de todo esto, es crear un set de datos, con cientos de imágenes (entre
más mejor). Así que por que no automatizar este proceso. Eso es los que haremos
hoy.

“FaceScraped” utilizara los servicios de Facebook para
obtener y descargar todas las imágenes que queramos de perfiles públicos de
Facebook. Todo de manera automatizada, y de manera muy fácil.
¿Qué te parece? Interesante ¿Verdad? Pues comencemos a
escribir código.
“FaceScraped.py”:
Muy bien, ya sabemos que finalidad cumplirá el proyecto, es
hora de empezar a desarrollarlo.
El único recurso externo que utilizaremos será el link del
servicio de Facebook Graph: http://graph.facebook.com/picture?id=3754&width=800.
Como pueden observar, es un enlace cuyo parámetros son: id
el cual es el id de la imagen, y width.
De resto, todo lo encontraremos en la librería estándar de
Python.
Muy bien, ahora sí, comencemos.




















 
Comenzamos importando las librerías necesarias. Sys, os,
urllib, datatime y random.



Seguido de esto, creamos 2 funciones. Create_dir, se
encargara de crear un directorio, en el cual se contendrán las imágenes descargadas.
Como pueden observar, el nombre del directorio sera la fecha actual, de esta
manera evitaremos errores con directorios del mismo nombre. Luego declaramos a la
función, “geturl” la cual toma como argumento la id de la imagen, esta función
retornara la url con un id determinado del servicio de Facebook, esta url será
la imagen. Podrimos introducir esta url en nuestro navegador, cambiando name
por un número entero, y obtendríamos como resultado una imagen.



Luego declaramos a la función “getProfile” la cual toma como
argumento la url de una imagen y el nombre de con el cual será descargada. Lo
que hará esta función será guardar las imágenes en el directorio. Como pueden
observar, lo que hacemos es obtener la url de una imagen y escribirla en un
fichero.



Proseguimos declarando otra función. “getImages” el cual
toma como argumento “sizeDataset” el cual es un numero entero ingresado por el usuario,
“sizeDataset” indicara el tamaño del set de datos, esto quiere decir, el número
de imágenes que deseamos descargar.

Observen también la variable “id”, la cual, como imaginaran,
será la id de la imagen a descargar. Esta id será un numero aleatorio entre el
1 y el 10000 (1e4. Un 1 seguido de 4 ceros). Seguido de esto creamos el
directorio llamado “face_data” y empezamos a descargar las imágenes.

 



Por último, en una última función, unimos todo lo creado
anteriormente y empezamos los procesos. Lo que hacemos es pedir una entrada al
usuario mediante los argumentos de la consola y llamamos a la función main.

Ahora estamos aptos para ejecutar el script:


Al ingresar “FaceScraped.py 10” en mi consola este es el
resultado obtenido.


Ahora nos podemos dirigir a la carpeta generada y veremos lo
siguiente:




Como pueden observar, la 10 imágenes se han descargado de
manera exitosamente. Por supuesto, como indicamos que las id se generaran de
manera aleatorio, los resultado no serán los mismos.

Puedes descargar el código completo ingresando al siguiente enlace: https://github.com/LuisAlejandroSalcedo/FaceScraped.

¿Qué te pareció? ¿Alguna duda? No olvides dejar tu
comentario.
Mi nombre es Luis, y fue un placer compartir mis
conocimientos con todos ustedes :D.

  1. Unknown dice:

    Estoy empezando con Python, me podes echar una mano para levantar vuelo?

  2. Pablo dice:

    Hola Luis muy buen ejemplo.
    Estoy ejecutandolo, pero tengo un problema en la line 24, me da un error de sintaxis:

    SyntaxError: Non-ASCII character 'xc3' in file /Users/usuario/Desktop/carpeta sin título/FaceScraped.py on line 24, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
    [Finished in 0.0s with exit code 1]

    ¿Sabes que puede ocurrir?

    1. PythonDiario dice:

      Hola Pablo, intenta sacar el tilde que está en el comentario de la linea 24. Saludos

  3. Leonardo Calcagno dice:

    Estimado Luis.

    Excelente articulo y blog.
    Le quiero hacer una consulta. Con estas técnicas, es posible extraer y analizar una publicación de facebook puntual?. Me dedico a administrar un par de redes sociales y me seria muy util para analizar sorteos.

    Si es tan amable de contestarme y guiarme hacia dicho material si existe en algun lado, le agradecería.
    Slds.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.