-¿Te unes?- ㊜Suscribete!!!

Cómo Automatizar Facebook con Selenium en Python (Usando Jupyter Notebook)



¡Bienvenidos a otro tutorial en mi blog! 
Hoy vamos a aprender cómo automatizar Facebook con Python y Selenium, de una manera sencilla y paso a paso. Usaremos Jupyter Notebook, que es una excelente herramienta para ejecutar y probar código de forma interactiva.

¿Te gustaría iniciar sesión automáticamente en Facebook y descargar imágenes de un perfil sin hacer clic manualmente? 
Si es así, ¡acompáñame en esta aventura de automatización web

Instalación de Jupyter Notebook y Selenium

Antes de comenzar, asegurémonos de tener todo listo.

Instalar Jupyter Notebook

Si aún no tienes Jupyter Notebook instalado, solo abre tu terminal o CMD y escribe:

pip install notebook

Luego, para ejecutarlo, simplemente escribe:

jupyter notebook

Esto abrirá una ventana en tu navegador donde podrás escribir y ejecutar código fácilmente.


Instalar Selenium y WebDriver Manager

Selenium es la herramienta que usaremos para controlar el navegador de forma automática.
Para instalarlo, ejecuta este comando en una celda de Jupyter Notebook:

python
pip install selenium webdriver-manager

Con esto, ya tendremos todo listo para la automatización. ¡Vamos al siguiente paso! 

jupyter lab


Configurar Selenium y Abrir Facebook

Ahora vamos a escribir nuestro código en Jupyter Notebook. jupyter lab
Abre una nueva celda y copia lo siguiente:

Importar las Librerías Necesarias

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
import time

Esto le dice a Python qué herramientas vamos a utilizar.


Configurar el Navegador y Abrir Facebook

En otra celda, copia este código y ejecútalo:

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)

Explicación rápida:
Se configura Chrome para evitar notificaciones emergentes.
Se abre automáticamente la página de Facebook.

Si lo ejecutaste correctamente, verás que se abre una ventana de Chrome con Facebook cargado. 🤩


Iniciar Sesión Automáticamente

¿Listos para iniciar sesión sin escribir manualmente

Copia y ejecuta el siguiente código (Usa una cuenta de prueba, no la principal):

#Especifique la ruta a chromedriver.exe (descárguelo y guárdelo en su computadora)
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=chrome_options)

#abrir la página web
driver.get("http://www.facebook.com")

#nombre de usuario de destino
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='email']")))
password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='pass']")))

#Introduzca nombre de usuario y contraseña
username.clear()
username.send_keys("correo@gmail.com")
password.clear()
password.send_keys("password")

#Apunte al botón de inicio de sesión y haga clic en él
button = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()

#Nosotros estamos conectados

¿Qué hace este código?
Busca los campos de correo y contraseña.
Escribe tus credenciales de forma automática.
Hace clic en el botón Iniciar sesión.

Si todo sale bien, estarás dentro de tu cuenta sin haber tocado el teclado.  


Descargar Imágenes de un Perfil de Facebook

Ahora vamos a navegar por un perfil y descargar imágenes automáticamente. 

Buscar imágenes en un perfil

Ejecuta este código:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# Esperar 5 segundos para permitir que se cargue la nueva página
time.sleep(5)

images = []

# Iterar sobre las imágenes cargadas y etiquetadas respectivamente
for i in ["photos_by", "photos_of"]:
    # *********************************************
    # !! Cambia "nucleolinuxuagrm" por tu propia dirección !!
    # *********************************************
    driver.get("https://www.facebook.com/profile.php?id=100009781061685 " + i + "/")
    time.sleep(5)
   
    # Desplazarse hacia abajo
    # Aumenta el rango para desplazarte más
    # Ejemplo: range(0,10) se desplaza más de 650 imágenes
    for j in range(0, 1):
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(10)

    # Obtener todos los elementos de enlace en la página
    anchors = driver.find_elements(By.TAG_NAME, 'a')
    anchors = [a.get_attribute('href') for a in anchors]
    # Filtrar solo los enlaces de imágenes
    anchors = [a for a in anchors if str(a).startswith("https://www.facebook.com/photo")]
   
    print('Encontré ' + str(len(anchors)) + ' enlaces a imágenes')
   
    # Extraer el elemento de imagen [-1] en cada enlace
    for a in anchors:
        driver.get(a)  # navegar al enlace
        time.sleep(5)  # esperar un poco
        img = driver.find_elements(By.TAG_NAME, "img")
        images.append(img[-1].get_attribute("src"))  # podría cambiar en el futuro a img[?]

print('¡He recopilado ' + str(len(images)) + ' imágenes!')

¿Qué hace este código?
Abre la sección de fotos de un perfil.
Hace scroll automático para cargar más imágenes.
Extrae los enlaces de las fotos.


Descargar las imágenes automáticamente

Para guardar las imágenes en tu computadora, ejecuta esto:

images

import os

path = os.getcwd()
path = os.path.join(path, "FB_IMAGES")

# Verificar si el directorio ya existe
if not os.path.exists(path):
    # Crea el directorio si no existe
    os.mkdir(path)
else:
    print(f"El directorio {path} ya existe.")

import os
import wget

# Descargar imágenes
counter = 0
for index, image in enumerate(images):
    save_as = os.path.join(path, str(index) + '.jpg')
    try:
        wget.download(image, save_as)
        counter += 1
    except Exception as e:
        print(f"No se pudo descargar la imagen {image}: {e}")

📸 ¿Qué hará esto?
Crea una carpeta FB_IMAGES en tu computadora.
Descarga todas las imágenes automáticamente.
Las guarda con nombres numerados.

¡Así de fácil puedes descargar imágenes sin esfuerzo! 



import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException
# Configuración del WebDriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # Ejecutar en modo headless
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=options)

# URL de Facebook
url = "https://www.facebook.com/"

# Tu nombre de usuario y contraseña de Facebook
username = "correo@gmail.com"
password = "password"

# Nombres a buscar
nombres_a_buscar = ["Gregorio", "Arandia Mejia", "Mejia"]

# Iniciar sesión en Facebook
driver.get(url)
wait = WebDriverWait(driver, 15)
try:
    wait.until(EC.presence_of_element_located((By.NAME, "email"))).send_keys(username)
    wait.until(EC.presence_of_element_located((By.NAME, "pass"))).send_keys(password)
    wait.until(EC.presence_of_element_located((By.NAME, "login"))).click()
except TimeoutException:
    print("Error al cargar la página de inicio de sesión")
    driver.quit()
    exit()

# Esperar a que se inicie sesión
wait.until(EC.presence_of_element_located((By.XPATH, "//div[@aria-label='Crea una publicación']")))

# Lista para almacenar los enlaces de perfiles
perfiles_encontrados = []

for nombre in nombres_a_buscar:
    try:
        # Realizar la búsqueda
        search_box = wait.until(EC.presence_of_element_located((By.XPATH, '//input[@type="search"]')))
        search_box.clear()
        search_box.send_keys(nombre)
        search_box.send_keys(Keys.RETURN)

        # Esperar a que se carguen los resultados
        wait.until(EC.presence_of_element_located((By.XPATH, "//div[@role='feed']")))

        # Obtener enlaces de perfiles
        perfiles = driver.find_elements(By.XPATH, '//a[contains(@href, "https://www.facebook.com/") and not(contains(@href, "pages")) and not(contains(@href, "groups"))]')
        for perfil in perfiles:
            href = perfil.getAttribute('href')
            if 'profile.php?id=' in href or '/people/' in href:
                perfiles_encontrados.append(href.split('?')[0])

    except (NoSuchElementException, TimeoutException) as e:
        print(f"Error durante la búsqueda del nombre {nombre}: {e}")

# Eliminar duplicados
perfiles_encontrados = list(set(perfiles_encontrados))

# Guardar en archivo de texto
with open("perfiles_facebook.txt", "w") as file:
    for perfil in perfiles_encontrados:
        file.write(perfil + "\n")

print(f'¡He encontrado {len(perfiles_encontrados)} perfiles!')

# Cerrar el navegador
driver.quit()

Video




Conclusión

En este tutorial aprendimos a:

  • Usar Jupyter Notebook y Selenium en Python.
  • Iniciar sesión en Facebook automáticamente.
  • Extraer y descargar imágenes de un perfil.

Recuerda: Usa esto con responsabilidad y evita cuentas personales. Para tareas más avanzadas, usa la Facebook Graph API.

¿Te gustó el tutorial? Déjamelo saber en los comentarios y comparte este post. Nos vemos en el próximo artículo. ¡Feliz programación! 

Como estudiante en constante aprendizaje, organizo mis ideas en forma de proyectos y artículos como este. Si hay errores, no dudes en corregirme y dejar tus comentarios.

Si te gusta este contenido, ¡sígueme y comparte! O (∩_∩) O  

 ¡Muchas gracias por tu apoyo! 🚀

Comentarios

¿Hay algo que quieras buscar?

㊜Luishiño

★ ★ ★ ★ ★

>_

Hola soy ぎLuishiño y este es mi Blog personal..... 

Soy un joven emprendedor, curioso, creativo y confiable, interesado en mejorar profesionalmente. Estudio Ingeniería de Sistemas y me encanta escribir sobre temas que me apasionan, como programación, desarrollo web, aplicaciones y software. A través de mi blog, comparto conocimientos, experiencias y proyectos propios. ¡Únete a mi viaje hacia el conocimiento y el crecimiento tecnológico!
⚠ Nadie es como tú y ese es tú súper poder
୧⍢⃝୨ Sigue mi blog :3
TᕼE ᔕEᐯEᑎ ᑕOᗪEᔕ

↪Mis redes sociales↩

Entradas populares de este blog

CiclopeClic: Generador de Enlaces con IA para Campañas Phishing

Doxing Espionaje y Recopilación de Información

Sockberus Autentificación de proxys

Ofertas y Descuentos

Libros

Curso Exploit: Esteganografía y Encriptación

Domina las técnicas de ocultación y cifrado utilizadas en el hacking avanzado. Aprende a esconder información en archivos, imágenes y más, utilizando esteganografía, y protege datos con métodos de encriptación imposibles de romper. Este curso te llevará desde lo básico hasta la aplicación de herramientas y exploits reales.

Instructor: pericena
Duración: 2 horas por sesión
Modalidad: Online

$50 USD $40 USD

Libros

Curso OSINT: Inteligencia de Datos Públicos y Hacking

El OSINT (Open Source Intelligence) es una de las herramientas más poderosas en el hacking y la ciberseguridad. En este curso aprenderás a recolectar, analizar y explotar información pública disponible en internet. Descubre cómo los hackers encuentran datos sensibles, rastrean personas y empresas, y cómo puedes protegerte de estas técnicas.

Instructor: pericena
Duración: 2 horas por sesión
Modalidad: Online

$50 USD $40 USD

El arte de la guerra nos enseña a no confiar en la posibilidad de que el enemigo no venga, sino en nuestra propia preparación para recibirlo; no confiar en el azar de que no ataque, sino mejor en que hemos hecho inaccesible nuestra posición. — El arte de la guerra, Sun Tzu

¡Gran Estreno!

Nuevo video disponible. ¡No te lo pierdas!

Mira este video y descubre la verdad 22222

📌 Tú y las redes sociales

💡 ¿Realmente eres libre en el mundo digital?

Publicada por 🚀 Servicio Técnico "The Seven Codes" en Martes, 5 de diciembre de 2019

Es momento de cuestionarlo todo… ¿Eres realmente libre o solo sigues el juego de las redes sociales?

Banner

¡Conéctate con la comunidad!

Únete a nuestro chat en vivo para compartir ideas, hacer preguntas y conocer a otros apasionados como tú. 🚀

Comentarios

Blog Populares

Instalar DoxWeb con Termux

Instalar Metasploit-Framework En Android Con Termux

Termux Instalar Ngrok

Hackear contraseñas WiFi con Python fácilmente con este sencillo script

WhatScriptApp: Automatización de Mensajería y Su Impacto

By Blog

By Luishiño

¡Bienvenido a nuestra sección de Seguridad!

Comparte el enlace con tus amigos

¡Copiar Enlace!