====== Python: Selenium ====== Selenium es una herramienta de código abierto y multiplataforma que permite automatizar interacciones con aplicaciones web sin intervención manual. También es la única solución cuando queremos procesar webs que tienen carga dinámica, es decir, se va cargando el contenido sin modicar la URL. * [[https://www.selenium.dev/|Web oficial de Selenium]] * [[https://pypi.org/project/selenium/|Conector para Python]] Navegadores soportados: * Mozilla Firefox * Google Chrome * Safari * Microsoft Edge * Opera * Microsoft IE ===== Funcionamiento ===== {{ :informatica:programacion:python:modulos:selenium:selenium-arquitectura-simplificada.png?nolink |}} - Cuando ejecutamos un automatismo, el código se convierte en JSON - El JSON generado se envía al //browser driver// a través del //JSON Wire Protocol Over HTTP//. - El driver del navegador ejecuta los comandos en su respectivo navegador mediante HTTP. - El driver del navegador obtiene la respuesta del navegador y la envía de vuelta al cliente. ===== Instalación ===== A través del gestor de paquetes **pip**: pip install selenium ===== Uso ===== Además de la instalación de Selenium, debemos elegir el navegador que vamos a utilizar porque lo que hace Selenium es lanzar un navegador y automatizar acciones dentro de él. Debemos descargar el [[https://selenium-python.readthedocs.io/installation.html#drivers|webdriver]] para el navegador correspondiente. Navegadores más populares y estándar: * [[https://github.com/mozilla/geckodriver/releases/latest|Mozilla Firefox]] * [[https://sites.google.com/a/chromium.org/chromedriver/downloads|Google Chrome]] from selenium import webdriver driver = webdriver.Firefox("/ruta/webdriver/firefox") driver.get("https://tempwin.net") driver.quit El anterior código abrirá una instancia de Firefox y cargará la URL https://tempwin.net. Al finalizar la carga, se cerrará. Si usásemos Google Chrome, el método que usaríamos con ''webdriver'' sería ''Chrome'': from selenium import webdriver driver = webdriver.Chrome("/ruta/webdriver/chrome") driver.get("https://tempwin.net") driver.quit ===== XPath ===== En Firefox: * XPath: ''%%//%%*[@id=%%'%%nombre%%'%%]'' * CSS: ''#nombre''