Automatizacion de registro en sitios web con Selenium y Python

Automatizacion de registro en sitios web con Selenium y Python

Aprende a automatizar el registro en sitios web usando Selenium y undetected_chromedriver. Guia paso a paso con codigo completo.

En este articulo, te mostraremos como puedes automatizar el proceso de registro en sitios web utilizando un pequeño script en Python. Para ello, emplearemos Selenium junto con undetected_chromedriver, herramientas que nos permiten interactuar con el navegador de manera eficiente y sin complicaciones. Este ejemplo es ideal para quienes desean aprender a interactuar con formularios web sin necesidad de intervencion manual. A continuacion, desglosaremos cada parte del codigo de forma clara y comprensible.


Que es Selenium y undetected_chromedriver?#

Selenium es una biblioteca de Python que permite automatizar navegadores web. Con ella, puedes simular clics, completar formularios y navegar por paginas, lo que resulta muy util para tareas repetitivas o pruebas automatizadas.

undetected_chromedriver es una variante de ChromeDriver que ayuda a evitar la deteccion de automatizacion por parte de algunos sitios web. Esto es especialmente util en plataformas que implementan medidas para prevenir el uso de bots.


Desglose del Codigo#

Importaciones#

Importamos las bibliotecas necesarias para la automatizacion y el manejo de excepciones.

Configuracion de Logging#

Configuramos el logging para que podamos ver mensajes informativos y de error en la consola.

setup_driver#

Esta funcion configura y devuelve el driver de Chrome. Aqui se establecen varias opciones para optimizar el rendimiento y evitar problemas comunes al iniciar el navegador.

fill_registration_form#

Esta es la parte central del script, donde se navega a la pagina de registro de Crunchyroll y se completan los campos de correo electronico y contrasena. Utilizamos WebDriverWait para asegurarnos de que los elementos esten disponibles antes de interactuar con ellos, lo que ayuda a evitar errores de tiempo de espera.

close_driver#

Esta funcion se encarga de cerrar el navegador de manera segura al finalizar el script, ya sea de forma normal o si se interrumpe la ejecucion.

Bloque Principal#

Aqui se definen los datos de registro (correo y contrasena) y se llama a las funciones para iniciar el navegador y llenar el formulario. Tambien se incluye un bucle que permite mantener el script en ejecucion hasta que el usuario decida cancelarlo con Ctrl + C.


Requisitos Previos#

Antes de comenzar, asegurate de tener instalado Python en tu sistema. Tambien necesitaras instalar las bibliotecas necesarias. Puedes hacerlo ejecutando el siguiente comando en tu terminal:

Terminal window
pip install undetected-chromedriver selenium

Configuracion del Navegador#

def setup_driver():
options = uc.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
try:
driver = uc.Chrome(options=options)
logging.info("Navegador iniciado correctamente")
return driver
except WebDriverException as e:
logging.error(f"Error al iniciar el navegador: {e}")
raise

Explicacion de las opciones#

El navegador se inicia mediante el comando uc.Chrome(options=options), y si todo va bien, se devuelve el “driver” que se usara para navegar por el sitio.


Rellenar el Formulario de Registro#

def fill_registration_form(driver, email, password):
try:
# Navega a la pagina de registro
driver.get("https://sso.crunchyroll.com/es/register")
logging.info("Pagina de registro cargada correctamente")
# Rellena el campo de correo electronico
email_field = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//input[@type='email']"))
)
email_field.send_keys(email)
logging.info("Campo de correo electronico rellenado correctamente")
# Rellena el campo de contrasena
password_field = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//input[@type='password']"))
)
password_field.send_keys(password)
logging.info("Campo de contrasena rellenado correctamente")
# Haz clic en el boton de registro
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']"))
)
register_button.click()
logging.info("Boton de registro presionado correctamente")
return True
except TimeoutException:
logging.error("Tiempo de espera agotado")
except NoSuchElementException:
logging.error("Elemento no encontrado")
except WebDriverException as e:
logging.error(f"Error al rellenar el formulario: {e}")
return False

Que hace esta funcion?#

  1. Navega al sitio web: Usa el comando driver.get() para abrir la pagina de registro de Crunchyroll.
  2. Espera a que los elementos esten disponibles: Con WebDriverWait(), el script espera hasta que los campos del formulario esten listos para ser rellenados.
  3. Rellena el formulario: Envia el correo electronico y la contrasena en los campos correspondientes usando send_keys().
  4. Haz clic en el boton de registro: Finalmente, localiza el boton de registro y hace clic en el.

Manejo de Errores y Logging#

except TimeoutException:
logging.error("Tiempo de espera agotado")
except NoSuchElementException:
logging.error("Elemento no encontrado")
except WebDriverException as e:
logging.error(f"Error al rellenar el formulario: {e}")

La funcion utiliza un sistema de manejo de errores robusto:

Se usa logging para mostrar mensajes que indican si el proceso fue exitoso o si ocurrio algun problema, lo que ayuda a depurar errores rapidamente.


Cierre del Navegador#

def close_driver(driver):
try:
driver.quit()
except Exception as e:
logging.error(f"Error al cerrar el navegador: {e}")
logging.info("Navegador cerrado.")

La funcion close_driver() cierra el navegador al finalizar el script. Si ocurre un error al cerrarlo, se captura para evitar que el script se detenga de manera abrupta.


Ejecucion del Script#

if __name__ == "__main__":
# Datos de registro (Cambiar datos de uso)
email = "gayoji9200@pokeline.com"
password = "passoworde45s6874"
driver = setup_driver()
atexit.register(close_driver, driver)
try:
fill_registration_form(driver, email, password)
# Espera para observar el resultado
while True:
time.sleep(1)
except KeyboardInterrupt:
logging.info("Ejecucion cancelada por el usuario")
except Exception as e:
logging.error(f"Error: {e}")

Que hace el bloque principal?#

  1. Define los datos de registro (correo y contrasena).
  2. Inicia el navegador con setup_driver().
  3. Registra la funcion close_driver() para que se ejecute al finalizar el script.
  4. Ejecuta fill_registration_form() para completar el registro.
  5. Mantiene la ejecucion activa con un bucle while True para que puedas observar los resultados.
  6. Maneja la interrupcion con KeyboardInterrupt (Ctrl + C) de manera elegante.

Consideraciones adicionales#

Uso de WebDriverWait#

WebDriverWait es una herramienta fundamental en Selenium. Permite esperar hasta que un elemento cumpla una condicion especifica antes de continuar. Esto es especialmente importante en paginas web con contenido dinamico o que tardan en cargar.

XPath vs CSS Selectors#

En el ejemplo se utiliza XPath para localizar elementos. Sin embargo, CSS Selectors son una alternativa valida y a menudo mas rapida. La eleccion depende del caso de uso y la complejidad de la estructura HTML.

Datos de prueba#

Es importante utilizar datos ficticios o de prueba al automatizar registros. Nunca uses informacion real de tarjetas o identificacion personal.


Posibles problemas y soluciones#

El navegador no se inicia#

Solucion: Verifica que Chrome este instalado y que la version del driver sea compatible.

El script no encuentra los elementos#

Solucion: Revisa que los XPath sean correctos y que la pagina haya cargado completamente. Ajusta el tiempo de espera si es necesario.

El sitio detecta el bot#

Solucion: Usa undetected_chromedriver y opciones como --disable-blink-features=AutomationControlled.

Error de permisos#

Solucion: Ejecuta el script como administrador o asegurate de tener permisos de escritura en el directorio.


Codigo completo#

Puedes descargar el codigo completo desde el siguiente enlace, que te llevara al repositorio en GitHub:

DESCARGAR CODIGO: registro-automatico-selenium


Video Tutorial#

Puedes ver un video tutorial explicando los pasos basicos para ejecutar este script:


Conclusion#

Este codigo es una demostracion practica de como automatizar el registro en un sitio web usando Python y Selenium. Gracias a la combinacion de tecnicas como el manejo de errores, el uso de logging y la automatizacion del navegador, puedes ahorrar tiempo y esfuerzo al realizar tareas repetitivas como esta.

Recomendaciones finales#

Reflexion final#

La automatizacion con Selenium y Python es una habilidad valiosa que puede ahorrarte horas de trabajo manual. Con practica y las herramientas adecuadas, podras automatizar procesos complejos y enfocarte en tareas mas importantes.

Nota: Recuerda que este tipo de automatizacion debe ser usado con responsabilidad y respetando siempre las politicas de uso de los sitios web.

Comunidad TodoReal

¿Te sirvió esta guía o herramienta?

Únete a nuestro canal en Telegram o WhatsApp para no perderte actualizaciones, nuevos servidores y guías avanzadas.

Entradas relacionadas

Comentarios

Comparte tu opinión sobre esta publicación.