CodeGym /Cursos /Python SELF ES /Automatización de desplazamiento de página y navegación p...

Automatización de desplazamiento de página y navegación por enlaces

Python SELF ES
Nivel 36 , Lección 1
Disponible

1. Desplazamiento automático de página

Imagina que estás en ese feed tan terrorífico, pero familiar para muchos, de redes sociales, donde el contenido se carga perezosamente a medida que te deslizas hacia abajo. Resulta que este desplazamiento mágico tiene su propia API para automatización con Selenium.

Método execute_script()

El método execute_script() en Selenium permite ejecutar código JavaScript en la página, y es una herramienta poderosa cuando se trata de desplazarse. Vamos a ver cómo usarlo para desplazarnos por la página.

Python

from selenium import webdriver
import time

# Inicialización del controlador del navegador
driver = webdriver.Chrome()

# Abrimos la página objetivo
driver.get('https://example.com/scrolling_page')

# Desplazamos la página hacia abajo
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)  # Esperamos para que el contenido se cargue

# Desplazamos la página hacia arriba (por variedad)
driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")

# Cerramos la sesión
driver.quit()

En este script usamos window.scrollTo() para desplazarnos por la página. Los argumentos (0, document.body.scrollHeight) indican desplazarse desde el inicio hasta el final de la página. Es una técnica simple y efectiva para asegurar que todos los elementos dinámicos se carguen completamente.

¿Por qué es importante?

Usar execute_script() para desplazarse por la página te permite cargar contenido que puede estar oculto al principio, como en los casos de desplazamiento infinito. Esto es especialmente útil para redes sociales y feeds de noticias donde el contenido se carga dinámicamente.

2. Navegación por enlaces

Ahora que hemos dominado el desplazamiento, es hora de pasar a la siguiente tarea: navegar automáticamente por enlaces. Es una habilidad clave para recopilar datos, especialmente si la información está distribuida en diferentes páginas.

Conceptos básicos de navegación por enlaces

Para hacer clic en un enlace, podemos usar el método click() sobre el elemento seleccionado. Vamos a analizar un ejemplo sencillo:

Python

from selenium import webdriver

# Inicialización del controlador del navegador
driver = webdriver.Chrome()

# Abrimos la página objetivo
driver.get('https://example.com/links_page')

# Encontramos el enlace por texto y hacemos clic
link = driver.find_element_by_link_text('Next Page')
link.click()

# Cerramos la sesión
driver.quit()

En este ejemplo buscamos un enlace por su contenido de texto. Pero, ¿qué pasa si el texto no es único? En ese caso, puedes usar métodos más precisos como find_element_by_xpath() o find_element_by_css_selector().

Python

# Buscar el enlace por XPath
link = driver.find_element_by_xpath('//a[@href="/next_page"]')
link.click()

Ventajas de la navegación automática por enlaces

Navegar por enlaces con Selenium permite automatizar el proceso de recopilación de datos de páginas con paginación o cuando los datos están distribuidos en varias secciones del sitio. Esto es ideal para explorar resultados de búsqueda o navegar por catálogos de productos en sitios de tiendas en línea.

3. Combinación de desplazamiento y navegación

Ahora imagina que necesitas desplazarte por una página para encontrar un enlace o elemento necesario y luego navegar a otra página. Este es un proceso combinado que se puede automatizar.

Ejemplo de script combinado

Python

from selenium import webdriver
import time

# Inicialización del controlador del navegador
driver = webdriver.Chrome()

# Abrimos la página objetivo
driver.get('https://example.com/scroll_and_click')

# Desplazamos la página para cargar elementos ocultos
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)

# Encontramos y hacemos clic en el enlace necesario
link = driver.find_element_by_xpath('//a[text()="Load More"]')
link.click()

# Cerramos la sesión
driver.quit()

¿Qué puede salir mal?

Al trabajar con páginas dinámicas, a veces los elementos pueden no cargarse a tiempo o no cargarse completamente. En tales casos, necesitas usar métodos de espera para asegurarte que los elementos con los que deseas interactuar estén disponibles.

Python

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Esperamos hasta que el elemento sea clicable
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//a[text()="Load More"]'))
)
element.click()

Usar métodos de espera ayuda a evitar errores debido a elementos no listos y asegura un funcionamiento más estable del script.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION