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
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