Inicio > Cursos > Web Scraping con Python > Selenium: Scraping de sitios dinamicos
Web Scraping con PythonScraping AvanzadoLección 3 de 8

Selenium: Scraping de sitios dinamicos

Muchos sitios modernos cargan contenido con JavaScript (React, Vue, Angular). requests + BeautifulSoup no ejecuta JavaScript. Selenium abre un navegador real que ejecuta todo el JS.

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

# Abrir Chrome en modo headless (sin ventana)
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

# Navegar
driver.get("https://ejemplo.com")

# Esperar a que cargue un elemento
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "product"))
)

# Extraer datos
products = driver.find_elements(By.CLASS_NAME, "product")
for p in products:
    name = p.find_element(By.TAG_NAME, "h2").text
    price = p.find_element(By.CLASS_NAME, "price").text
    print(f"{name}: {price}")

driver.quit()

Cuando usar cada herramienta:

• requests + BS4: Sitios estaticos, APIs, paginas simples (80% de los casos) • Selenium: Sitios con JavaScript, login, scroll infinito, SPAs • Scrapy: Proyectos grandes, miles de paginas, necesitas velocidad • Playwright: Alternativa moderna a Selenium, mas rapida

← Selectores CSS y XPathBypass de protecciones anti-bot →

Practica esta lección

Resuelve los ejercicios del curso de Web Scraping con Python en la app, gratis y con corrección automática.

Empezar a practicar