🐍 Python
🐍 Python

Web scraper con Selenium y BeautifulSoup

Recolectar datos de páginas web de forma manual es inviable a escala.

Problema

Recolectar datos de páginas web de forma manual es inviable a escala. Las páginas dinámicas con JavaScript requieren un navegador real que ejecute el código antes de que el contenido sea accesible — las peticiones HTTP simples solo ven HTML vacío.

Solución

Scraper en dos niveles: BeautifulSoup para páginas estáticas (HTML ya renderizado) y Selenium para páginas dinámicas que carga el DOM completo antes de extraer. Manejo de paginación, rate limiting responsable y almacenamiento estructurado en CSV/JSON.

BeautifulSoup — páginas estáticas

  • requests para obtener el HTML y BeautifulSoup para parsearlo con selectores CSS y XPath
  • Extracción de texto, atributos href/src e imágenes
  • Paginación: detección del botón 'siguiente' y extracción en bucle
  • Manejo de errores HTTP: retry con backoff exponencial

Selenium — páginas dinámicas

  • WebDriver en modo headless: Chrome/Firefox sin interfaz gráfica
  • Esperas explícitas (WebDriverWait + expected_conditions) en lugar de sleep fijos
  • Scroll infinito: ejecución de JavaScript para cargar más contenido
  • Rate limiting: sleep aleatorio entre peticiones para evitar bloqueos
  • Exportación: pandas DataFrame → CSV con encoding UTF-8 y tipos correctos

Más proyectos en Python