Tutorial paso a paso: Web Scraping con Python y Selenium

Última actualización el January 23, 2026

La web de hoy no se parece en nada a la de hace unos años. Ahora, casi todas las páginas que visitas están llenas de JavaScript y cargan contenido de manera dinámica: desde scrolls infinitos y pop-ups molestos, hasta paneles que solo muestran información si interactúas. De hecho, , lo que significa que las herramientas clásicas de scraping que solo leen HTML estático se pierden un montón de datos importantes. Si alguna vez intentaste sacar precios de una tienda online moderna o recopilar anuncios de un mapa interactivo, seguro te diste cuenta: los datos que buscas no aparecen en el código fuente.

Aquí es donde Selenium se vuelve tu mejor amigo. Después de años creando herramientas de automatización (y sí, haciendo scraping en muchos sitios), te puedo decir que saber usar Selenium es una ventaja brutal si necesitas datos frescos y dinámicos. En este tutorial de scraping con Selenium, te voy a guiar paso a paso —desde la instalación hasta la automatización— y te mostraré cómo combinar Selenium con para conseguir datos estructurados y listos para exportar. Seas analista, comercial o simplemente te guste Python, vas a aprender trucos útiles (y seguro te vas a reír un poco, porque pelearse con selectores XPath es todo un arte).

¿Qué es Selenium y por qué usarlo para Web Scraping?

selenium-dynamic-vs-static-web-scraping.png Vamos a lo básico. es un framework open source que te permite controlar un navegador real —como Chrome o Firefox— desde tu código. Es como tener un robot que puede abrir páginas, hacer clics, rellenar formularios, moverse por la web y ejecutar JavaScript, igualito que una persona. Esto es clave porque la mayoría de los sitios modernos no muestran todos los datos de entrada; los cargan dinámicamente después de que interactúas.

¿Por qué esto es importante para el scraping? Herramientas como BeautifulSoup o Scrapy van de lujo con HTML estático, pero no pueden “ver” nada que se cargue con JavaScript después de abrir la página. Selenium, en cambio, puede interactuar en tiempo real, lo que lo hace perfecto para:

  • Sacar listas de productos que aparecen tras pulsar “Cargar más”
  • Obtener precios o reseñas que se actualizan al momento
  • Navegar por formularios de login, pop-ups o scrolls infinitos
  • Extraer datos de paneles, mapas u otros elementos interactivos

En resumen, Selenium es tu as bajo la manga cuando necesitas datos que solo aparecen después de cargar la página o tras una acción del usuario.

Pasos clave para hacer Web Scraping con Python y Selenium

El scraping con Selenium se resume en tres pasos básicos:

PasoQué hacesPor qué es importante
1. Configuración del entornoInstala Selenium, WebDriver y librerías de PythonPrepara tus herramientas y evita problemas de instalación
2. Localización de elementosEncuentra los datos usando IDs, clases, XPath, etc.Apunta a la información correcta, incluso si está oculta por JavaScript
3. Extracción y guardado de datosSaca texto, enlaces o tablas y guarda en CSV/ExcelConvierte datos web en algo útil para ti

Vamos a ver cada paso con ejemplos prácticos y código listo para que lo uses y adaptes.

Paso 1: Configura tu entorno de Python y Selenium

Lo primero es instalar Selenium y un driver de navegador (como ChromeDriver para Chrome). La buena noticia: ahora es más fácil que nunca.

Instala Selenium

Abre tu terminal y escribe:

1pip install selenium

Descarga un WebDriver

  • Chrome: Descarga (asegúrate de que coincida con tu versión de Chrome).
  • Firefox: Descarga .

Tip: Desde Selenium 4.6+, puedes usar Selenium Manager para descargar drivers automáticamente, así que probablemente ya no tendrás que preocuparte por las variables PATH ().

Tu primer script con Selenium

Aquí tienes un “hola mundo” con Selenium:

1from selenium import webdriver
2driver = webdriver.Chrome()  # O webdriver.Firefox()
3driver.get("https://example.com")
4print(driver.title)
5driver.quit()

Tips para solucionar problemas:

  • Si te sale un error de “driver not found”, revisa tu PATH o usa Selenium Manager.
  • Asegúrate de que la versión del navegador y el driver coincidan.
  • Si trabajas en un servidor sin interfaz gráfica, revisa los consejos para modo headless más abajo.

Paso 2: Localiza los elementos web para extraer datos

Ahora viene lo bueno: decirle a Selenium qué datos quieres. Las webs están hechas de elementos —divs, spans, tablas, etc.— y Selenium te da varias formas de encontrarlos.

Estrategias comunes para localizar elementos

  • By.ID: Busca un elemento por su ID único
  • By.CLASS_NAME: Busca elementos por clase CSS
  • By.XPATH: Usa expresiones XPath (muy flexible, pero puede ser frágil)
  • By.CSS_SELECTOR: Usa selectores CSS (ideal para búsquedas complejas)

Así puedes usarlos:

1from selenium.webdriver.common.by import By
2# Buscar por ID
3precio = driver.find_element(By.ID, "price").text
4# Buscar por XPath
5titulo = driver.find_element(By.XPATH, "//h1").text
6# Buscar todas las imágenes de productos por selector CSS
7imagenes = driver.find_elements(By.CSS_SELECTOR, ".product img")
8for img in imagenes:
9    print(img.get_attribute("src"))

Tip: Usa siempre el localizador más simple y estable (ID > clase > CSS > XPath). Y si la página tarda en cargar los datos, utiliza esperas explícitas:

1from selenium.webdriver.support.ui import WebDriverWait
2from selenium.webdriver.support import expected_conditions as EC
3wait = WebDriverWait(driver, 10)
4precio_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))

Esto evita que tu script falle si los datos tardan en aparecer.

Paso 3: Extrae y guarda los datos

Una vez localizados los elementos, es momento de sacar la información y guardarla donde más te convenga.

Extraer texto, enlaces y tablas

Por ejemplo, para extraer una tabla de productos:

1datos = []
2filas = driver.find_elements(By.XPATH, "//table/tbody/tr")
3for fila in filas:
4    celdas = fila.find_elements(By.TAG_NAME, "td")
5    datos.append([celda.text for celda in celdas])

Guardar en CSV con Pandas

1import pandas as pd
2df = pd.DataFrame(datos, columns=["Nombre", "Precio", "Stock"])
3df.to_csv("productos.csv", index=False)

También puedes guardar en Excel (df.to_excel("productos.xlsx")) o incluso enviar los datos a Google Sheets usando su API.

Ejemplo completo: Extraer títulos y precios de productos

1from selenium import webdriver
2from selenium.webdriver.common.by import By
3import pandas as pd
4driver = webdriver.Chrome()
5driver.get("https://example.com/products")
6datos = []
7productos = driver.find_elements(By.CLASS_NAME, "product-card")
8for p in productos:
9    titulo = p.find_element(By.CLASS_NAME, "title").text
10    precio = p.find_element(By.CLASS_NAME, "price").text
11    datos.append([titulo, precio])
12driver.quit()
13df = pd.DataFrame(datos, columns=["Título", "Precio"])
14df.to_csv("productos.csv", index=False)

Selenium vs. BeautifulSoup y Scrapy: ¿Qué hace único a Selenium?

selenium-vs-traditional-scrapers-comparison.png Vamos a aclarar la duda: ¿cuándo usar Selenium y cuándo BeautifulSoup o Scrapy es mejor opción? Aquí tienes una comparación rápida:

HerramientaIdeal para¿Soporta JavaScript?Velocidad y recursos
SeleniumSitios dinámicos/interactivosMás lento, consume más RAM
BeautifulSoupScraping de HTML estático simpleNoMuy rápido, ligero
ScrapyCrawling masivo de sitios estáticosLimitado*Súper rápido, bajo consumo
ThunderbitScraping sin código para negociosSí (IA)Rápido en trabajos pequeños/medios

*Scrapy puede manejar algo de contenido dinámico con plugins, pero no es su fuerte ().

Cuándo usar Selenium:

  • Los datos aparecen solo tras hacer clic, desplazarse o iniciar sesión
  • Necesitas interactuar con pop-ups, scrolls infinitos o paneles dinámicos
  • Los raspadores estáticos no te sirven

Cuándo usar BeautifulSoup/Scrapy:

  • Los datos están en el HTML inicial
  • Debes extraer miles de páginas rápido
  • Quieres consumir pocos recursos

Y si prefieres evitar el código, te permite extraer datos de sitios dinámicos con IA: solo haz clic en “Sugerir campos con IA” y exporta a Sheets, Notion o Airtable. (Más detalles abajo.)

Automatiza tareas de scraping con Selenium y Python

Seamos sinceros: nadie quiere levantarse a las 2 de la mañana para lanzar un script de scraping. Por suerte, puedes automatizar tus tareas de Selenium usando librerías de Python o el programador de tu sistema operativo (cron en Linux/Mac o el Programador de tareas en Windows).

Usando la librería schedule

1import schedule
2import time
3def tarea():
4    # Tu código de scraping aquí
5    print("Extrayendo datos...")
6schedule.every().day.at("09:00").do(tarea)
7while True:
8    schedule.run_pending()
9    time.sleep(1)

O con Cron (Linux/Mac)

Agrega esto a tu crontab para ejecutar cada hora:

10 * * * * python /ruta/a/tu_script.py

Tips para automatizar:

  • Ejecuta Selenium en modo headless (ver abajo) para evitar ventanas emergentes.
  • Registra errores y manda alertas si algo falla.
  • Cierra siempre el navegador con driver.quit() para liberar recursos.

Cómo hacer tu scraping con Selenium más rápido y fiable

Selenium es potente, pero puede ser lento y consumir muchos recursos si no tienes cuidado. Aquí tienes algunos trucos para optimizarlo:

1. Usa el modo Headless

No necesitas ver cómo Chrome se abre y cierra cien veces. El modo headless ejecuta el navegador en segundo plano:

1from selenium.webdriver.chrome.options import Options
2opts = Options()
3opts.headless = True
4driver = webdriver.Chrome(options=opts)

2. Bloquea imágenes y contenido innecesario

¿Para qué cargar imágenes si solo quieres texto? Bloquéalas para acelerar la carga:

1prefs = {"profile.managed_default_content_settings.images": 2}
2opts.add_experimental_option("prefs", prefs)

3. Usa localizadores eficientes

  • Prefiere IDs o selectores CSS simples antes que XPaths complicados.
  • Evita time.sleep(); usa esperas explícitas (WebDriverWait).

4. Aleatoriza los tiempos de espera

Agrega pausas aleatorias para simular navegación humana y evitar bloqueos:

1import random, time
2time.sleep(random.uniform(1, 3))

5. Rota agentes de usuario e IPs (si es necesario)

Si haces scraping masivo, cambia el user agent y considera usar proxies para evitar bloqueos básicos.

6. Gestiona sesiones y errores

  • Usa bloques try/except para manejar elementos que no aparecen.
  • Registra errores y haz capturas de pantalla para depurar.

Para más consejos de optimización, revisa .

Avanzado: Combina Selenium con Thunderbit para exportar datos estructurados

Aquí es donde la cosa se pone interesante —sobre todo si quieres ahorrar tiempo limpiando y exportando datos.

Después de extraer datos con Selenium, puedes usar para:

  • Detectar campos automáticamente: La IA de Thunderbit puede leer tus páginas o CSVs y sugerir nombres de columnas (“Sugerir campos con IA”).
  • Scraping de subpáginas: Si tienes una lista de URLs (como páginas de productos), Thunderbit puede visitar cada una y enriquecer tu tabla con más detalles —sin código extra.
  • Enriquecimiento de datos: Traduce, categoriza o analiza datos al instante.
  • Exporta donde quieras: Exporta con un clic a Google Sheets, Airtable, Notion, CSV o Excel.

Ejemplo de flujo de trabajo:

  1. Usa Selenium para extraer una lista de URLs y títulos de productos.
  2. Exporta los datos a CSV.
  3. Abre Thunderbit, importa tu CSV y deja que la IA sugiera los campos.
  4. Usa el scraping de subpáginas de Thunderbit para obtener más detalles (como imágenes o especificaciones) de cada URL.
  5. Exporta tu dataset final y estructurado a Sheets o Notion.

Esta combinación te ahorra horas de limpieza manual y te permite centrarte en el análisis, no en pelearte con datos desordenados. Para más detalles, revisa .

Buenas prácticas y solución de problemas en Web Scraping con Selenium

El scraping web es como ir de pesca: a veces tienes suerte, a veces te enredas. Así puedes mantener tus scripts fiables —y éticos:

Buenas prácticas

  • Respeta robots.txt y los términos del sitio: Comprueba siempre si está permitido hacer scraping.
  • Controla la frecuencia de tus peticiones: No sobrecargues los servidores —añade pausas y vigila los errores 429.
  • Usa APIs si existen: Si los datos son públicos vía API, mejor usarlas: es más seguro y estable.
  • Extrae solo datos públicos: Evita información personal o sensible y respeta las leyes de privacidad.
  • Gestiona pop-ups y CAPTCHAs: Usa Selenium para cerrar pop-ups, pero ten cuidado con los CAPTCHAs —son difíciles de automatizar.
  • Aleatoriza agentes de usuario y pausas: Ayuda a evitar bloqueos y detección.

Errores comunes y cómo solucionarlos

ErrorQué significaCómo solucionarlo
NoSuchElementExceptionNo encuentra el elementoRevisa el localizador; usa esperas
Errores de tiempo de esperaLa página o elemento tarda muchoAumenta el tiempo de espera; revisa tu conexión
Incompatibilidad driver/navegadorSelenium no puede abrir el navegadorActualiza el driver y el navegador
Caídas de sesiónEl navegador se cierra inesperadamenteUsa modo headless; gestiona recursos

Para más soluciones, revisa .

Conclusión y puntos clave

El scraping dinámico ya no es solo para programadores expertos. Con Python y Selenium puedes automatizar cualquier navegador, interactuar con sitios llenos de JavaScript y sacar los datos que tu negocio necesita —ya sea para ventas, investigación o simple curiosidad. Recuerda:

  • Selenium es la mejor opción para sitios dinámicos e interactivos.
  • Los tres pasos clave: configurar, localizar, extraer y guardar.
  • Automatiza tus scripts para mantener los datos siempre actualizados.
  • Optimiza para velocidad y fiabilidad usando modo headless, esperas inteligentes y localizadores eficientes.
  • Combina Selenium con Thunderbit para estructurar y exportar datos fácilmente —ideal si quieres evitar dolores de cabeza con hojas de cálculo.

¿Listo para probarlo? Empieza con los ejemplos de código de arriba y, cuando quieras llevar tu scraping al siguiente nivel, prueba para limpiar y exportar datos con IA al instante. Si quieres aprender más, visita el para tutoriales, guías y lo último en automatización web.

¡Feliz scraping! Que tus selectores siempre encuentren lo que buscas.

Prueba gratis el Raspador Web IA de Thunderbit

Preguntas frecuentes

1. ¿Por qué debería usar Selenium para scraping en vez de BeautifulSoup o Scrapy?
Selenium es ideal para extraer datos de sitios dinámicos donde el contenido aparece tras acciones del usuario o ejecución de JavaScript. BeautifulSoup y Scrapy son más rápidos para HTML estático, pero no pueden interactuar con elementos dinámicos ni simular clics o scrolls.

2. ¿Cómo puedo hacer que mi scraper con Selenium sea más rápido?
Usa el modo headless, bloquea imágenes y recursos innecesarios, utiliza localizadores eficientes y añade pausas aleatorias para simular navegación humana. Consulta para más consejos.

3. ¿Puedo programar tareas de scraping con Selenium para que se ejecuten automáticamente?
¡Sí! Usa la librería schedule de Python o el programador de tu sistema operativo (cron o Programador de tareas) para ejecutar scripts en intervalos definidos. Automatizar el scraping te ayuda a mantener los datos siempre actualizados.

4. ¿Cuál es la mejor forma de exportar los datos extraídos con Selenium?
Utiliza Pandas para guardar los datos en CSV o Excel. Para exportaciones más avanzadas (Google Sheets, Notion, Airtable), importa tus datos en y usa sus funciones de exportación con un clic.

5. ¿Cómo manejo pop-ups y CAPTCHAs en Selenium?
Puedes cerrar pop-ups localizando y haciendo clic en sus botones de cierre. Los CAPTCHAs son mucho más complicados: si te encuentras con uno, considera una solución manual o un servicio para resolver CAPTCHAs, y respeta siempre los términos del sitio.

¿Quieres más tutoriales de scraping, consejos de automatización con IA o estar al día en herramientas de datos para negocios? Suscríbete al o visita nuestro para ver demos prácticas.

Más información

Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Scraping con seleniumTutorial de scraping web con SeleniumPython selenium para extraer datos de sitios web
Índice de contenidos

Prueba Thunderbit

Consigue leads y otros datos en solo 2 clics. Impulsado por IA.

Obtener Thunderbit Es gratis
Extrae datos con IA
Transfiere datos fácilmente a Google Sheets, Airtable o Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week