Google+ Seguidores

lunes, 28 de mayo de 2018

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.

4 comentarios :
Write comentarios
  1. Estoy empezando con Python, me podes echar una mano para levantar vuelo?

    ResponderEliminar
  2. 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?

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

      Eliminar
  3. 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.

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .