0% encontró este documento útil (0 votos)
7 vistas50 páginas

Python WebScraping

El documento es una guía teórica sobre Web Scraping con Python, que abarca desde conceptos básicos hasta técnicas avanzadas. Incluye aplicaciones en el deporte, herramientas, consideraciones éticas y legales, y un proyecto práctico. Además, se detalla el proceso de planificación, desarrollo y automatización del scraping, así como el uso de herramientas como Selenium y BeautifulSoup.

Cargado por

paleo69
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas50 páginas

Python WebScraping

El documento es una guía teórica sobre Web Scraping con Python, que abarca desde conceptos básicos hasta técnicas avanzadas. Incluye aplicaciones en el deporte, herramientas, consideraciones éticas y legales, y un proyecto práctico. Además, se detalla el proceso de planificación, desarrollo y automatización del scraping, así como el uso de herramientas como Selenium y BeautifulSoup.

Cargado por

paleo69
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 50

Web Scraping con

Python
Guía Teórica – Módulo 4

Daniel Carreño
SPORTS DATA CAMPUS – MASTER EN PYTHON AVANZADO
Tabla de contenido
Introducción al Web Scraping ......................................................................................... 9
1.1- Qué es el Web Scraping .................................................................................. 9
¿Qué es? ................................................................................................................ 9
¿Por qué usarlo? ..................................................................................................... 9
¿Cómo funciona?.................................................................................................... 9
Ventajas ................................................................................................................. 9
Herramientas comunes (en Python) ........................................................................ 9
Ejemplo práctico .................................................................................................... 9
Web Scraping vs API.............................................................................................. 10
En el deporte ........................................................................................................ 10
Riesgos y cuidados ............................................................................................... 10
En resumen .......................................................................................................... 10
1.2- Aplicaciones del Web Scraping en el Deporte ................................................ 10
Ejemplos por deporte............................................................................................ 10
Caso práctico ....................................................................................................... 11
Conclusión ........................................................................................................... 11
1.3- ¿Qué es una página web? (Entender lo que vas a scrapear) ............................ 11
¿Qué contiene una página web? ............................................................................ 11
Analogía ............................................................................................................... 11
¿Y qué hace el scraper? ............................................................................................ 11
Ejemplo HTML simplificado ................................................................................... 12
¿Qué significan <tr>, <th> y <td>? .......................................................................... 12
En resumen: .......................................................................................................... 12
Scraping explicado línea por línea: ........................................................................ 12
1.4- Arquitectura Cliente-Servidor: El Baile Digital ................................................ 13
¿Qué es? .............................................................................................................. 13
¿Qué pasa en scraping? ........................................................................................ 13
Ejemplo ................................................................................................................ 13
Importancia para scraping..................................................................................... 13
Resumen .............................................................................................................. 13
1.5- HTML y CSS: El Esqueleto y el Vestuario de la Web ........................................ 13
¿Qué es HTML? ..................................................................................................... 13
¿Qué es CSS? ....................................................................................................... 14
Ejemplo básico de HTML ....................................................................................... 14

P á g i n a 1 | 49
Cómo leerlo desde Python .................................................................................... 14
¿Qué debes saber de HTML para scraping? ............................................................ 14
Resumen .............................................................................................................. 14
1.6- URL y su estructura: El mapa del tesoro......................................................... 15
¿Qué es una URL? ................................................................................................. 15
Ejemplo ................................................................................................................ 15
¿Por qué es importante para scraping? .................................................................. 15
Ejemplo de generación dinámica de URLs ............................................................. 15
Resumen .............................................................................................................. 15
1.7- Tipos de Web Scraping: Elige la estrategia correcta ........................................ 16
Comparativa de tipos de Web Scraping.................................................................. 16
Resumen .............................................................................................................. 16
1.8- Pasos del Web Scraping: Tu estrategia de juego ............................................. 16
1. Planificación ..................................................................................................... 17
2. Inspección de la página ..................................................................................... 17
3. Escribir el scraper ............................................................................................. 17
4. Limpieza de datos ............................................................................................. 17
5. Almacenamiento .............................................................................................. 17
6. Automatización ................................................................................................. 17
Ejemplo simple del flujo: ....................................................................................... 18
Resumen .............................................................................................................. 18
1.9- XPath: Tu GPS para encontrar datos .............................................................. 18
¿Qué es XPath? ..................................................................................................... 18
Ejemplo HTML: ..................................................................................................... 18
XPath para obtener los puntos de LeBron:.................................................................. 19
XPath vs selectores CSS........................................................................................ 19
¿Cómo usarlo en scraping? ................................................................................... 19
Con lxml ............................................................................................................... 19
¿Cómo obtener un XPath? ..................................................................................... 19
Resumen .............................................................................................................. 19
1.10- Tipos de páginas web: Eligiendo la estrategia correcta ................................... 20
1. Páginas Estáticas .............................................................................................. 20
2. Páginas Dinámicas ............................................................................................ 20
3. Páginas con API................................................................................................. 20
4. Infinite Scroll..................................................................................................... 20
5. Sitios Protegidos ............................................................................................... 20
P á g i n a 2 | 49
Resumen .............................................................................................................. 21
1.11 – Consideraciones éticas y legales: Jugando limpio ............................................ 21
¿Es legal? ............................................................................................................. 21
¿Qué es robots.txt? ............................................................................................... 21
Buenas prácticas .................................................................................................. 21
Casos problemáticos ............................................................................................ 21
En resumen .......................................................................................................... 22
2.1- Herramientas para Web Scraping con Python ......................................................... 22
1. Requests .......................................................................................................... 22
2. BeautifulSoup ................................................................................................... 22
3. lxml .................................................................................................................. 22
4. Selenium .......................................................................................................... 23
5. Pandas (read_html) ........................................................................................... 23
2.2- Comparación de herramientas: ¿cuál usar y cuándo? ......................................... 23
Tabla de comparación .............................................................................................. 24
En resumen .......................................................................................................... 24
3. Web Scraping: Una sola página estática .................................................................... 24
3.1 – pandas.read_html(): Una herramienta simple pero poderosa ............................. 24
¿Qué es? .............................................................................................................. 24
Uso básico ........................................................................................................... 24
Ventajas ............................................................................................................... 24
Desventajas ......................................................................................................... 25
Consejos avanzados ............................................................................................. 25
Cuándo no usarlo ................................................................................................. 25
3.2 – requests: Tu pase VIP al contenido web ............................................................. 25
¿Qué es? .............................................................................................................. 25
Uso básico ........................................................................................................... 25
Ventajas ............................................................................................................... 25
Consejos avanzados ............................................................................................. 25
Cuándo evitarlo .................................................................................................... 25
3.3 – lxml: El analizador de alta velocidad .................................................................. 25
¿Qué es? .............................................................................................................. 25
Uso básico ........................................................................................................... 26
Ventajas ............................................................................................................... 26
Limitaciones......................................................................................................... 26
Cuándo evitarlo .................................................................................................... 26
P á g i n a 3 | 49
3.4 – BeautifulSoup: El chef experto en datos web ..................................................... 26
¿Qué es? .............................................................................................................. 26
Uso básico ........................................................................................................... 26
Ventajas ............................................................................................................... 26
Consejos avanzados ............................................................................................. 26
Cuándo evitarlo .................................................................................................... 27
Comparación rápida (Resumen de este bloque) ........................................................ 27
3.5 – XPath Avanzado: Precisión quirúrgica en la extracción ....................................... 27
¿Qué es XPath avanzado?...................................................................................... 27
Técnicas avanzadas con ejemplos ......................................................................... 27
Recomendaciones ................................................................................................ 28
En resumen .......................................................................................................... 28
4. Web Scraping: Paginación ........................................................................................ 28
4.1 – Técnicas de paginación..................................................................................... 28
¿Qué es la paginación? ......................................................................................... 28
Tipos comunes de paginación ............................................................................... 28
Código ejemplo: paginación con bucle .................................................................. 28
4.2 – Manejo de múltiples páginas ............................................................................ 29
Consejos prácticos ............................................................................................... 29
En resumen .......................................................................................................... 29
5 – Web Scraping: Selenium ......................................................................................... 29
¿Qué es Selenium?................................................................................................... 29
5.1 – Sitios Web Dinámicos y JavaScript .................................................................... 29
¿Cómo detectarlo? ............................................................................................... 29
5.2 – Introducción a Selenium ................................................................................... 29
Instalación rápida ................................................................................................. 29
Uso básico ........................................................................................................... 30
5.3 – Carga dinámica: scroll, botones, espera ............................................................ 30
Simular clic: ......................................................................................................... 30
Simular scroll: ...................................................................................................... 30
Esperar:................................................................................................................ 30
5.4 – Acciones típicas con Selenium ......................................................................... 30
5.5 – Descarga automática del WebDriver + Headless mode ...................................... 30
Descargar WebDriver automáticamente: ............................................................... 30
Headless (sin abrir ventana): ................................................................................. 31
5.6 – Scrolling avanzado y ejecución de JavaScript..................................................... 31
P á g i n a 4 | 49
5.7 – Scrolling Suavizado (Smooth)............................................................................ 31
5.8 – Formularios y login ........................................................................................... 31
5.9 – Modo incógnito ................................................................................................ 31
5.10 – Páginas caóticas y XPaths personalizados ....................................................... 31
5.11 – Selenium con proxies ..................................................................................... 31
5.12 – Recomendaciones prácticas........................................................................... 32
En resumen .......................................................................................................... 32
6 – Web Scraping Nivel 4: Evitando Detección ............................................................... 32
6.1 – Scraping en la nube .......................................................................................... 32
6.2 – Uso de proxies .................................................................................................. 32
6.3 – IPs aleatorias (random proxy pool) .................................................................... 32
6.4 – Headers personalizados ................................................................................... 32
6.5 – Manejo de cookies............................................................................................ 33
6.6 – Time.sleep() ..................................................................................................... 33
6.7 – WebDriverWait (mejor que sleep) ...................................................................... 33
6.8 – Randomización del tiempo ............................................................................... 33
6.9 – Concurrencia (opcional) ................................................................................... 33
Consideraciones éticas ........................................................................................ 34
7 – Web Scraping Nivel 5: Scraping por API .................................................................... 34
¿Qué es una API? .................................................................................................. 34
¿Ventajas de usar APIs?......................................................................................... 34
7.1 – Revisar requerimientos en el navegador ............................................................ 34
7.2 – Extracción de <iframe> ..................................................................................... 34
7.3 – Extracción desde etiquetas <script>.................................................................. 34
7.4 – requests-html para carga dinámica ................................................................... 34
En resumen .......................................................................................................... 35
8 – Web Scraping Nivel 6: Cookies, Autenticación y Captchas ....................................... 35
8.1 – Aceptación de Cookies ..................................................................................... 35
8.2 – Tipos de Autenticación ..................................................................................... 35
a) Autenticación básica HTTP ................................................................................ 35
b) Autenticación con formularios........................................................................... 35
c) Autenticación OAuth ......................................................................................... 36
d) Autenticación por token .................................................................................... 36
8.3 – Detección y uso de cookies de autenticación .................................................... 36
8.4 – Manejo de sesiones .......................................................................................... 36
8.5 – Resolución de captchas ................................................................................... 36
P á g i n a 5 | 49
9 – Web Scraping Nivel 7: Cloudflare............................................................................. 36
9.1 – Extracción de sitios protegidos por Cloudflare ................................................... 36
9.2 – Uso de cloudscraper ........................................................................................ 37
10 – Web Scraping Nivel 8: Descarga de Archivos Multimedia ........................................ 37
10.1 – Descarga de Imágenes.................................................................................... 37
10.2 – Descarga de PDFs, documentos, etc. .............................................................. 37
10.3 – Descarga de videos ........................................................................................ 37
11 – Web Scraping Responsable y Ético ........................................................................ 38
11.1 – ¿Por qué es importante? ................................................................................. 38
11.2 – Buenas prácticas ............................................................................................ 38
11.3 – Controlar velocidad ........................................................................................ 38
12 – Paralelización en Web Scraping ............................................................................. 38
12.1 – Técnicas comunes .......................................................................................... 38
1. Multithreading................................................................................................... 38
2. Multiprocessing ................................................................................................ 39
3. Asincronía con asyncio...................................................................................... 39
Consideraciones .................................................................................................. 39
13 – Puntos de Control: Logging y Alertas ...................................................................... 39
13.1 – Logging (registro de eventos) ........................................................................... 40
13.2 – Alertas ........................................................................................................... 40
13.3 – Puntos clave a registrar ................................................................................... 40
13.4 – Monitoreo de rendimiento ............................................................................... 40
13.5 – Resumen periódico ........................................................................................ 40
14 – Automatización de Descarga Periódica .............................................................. 40
14.1 – Programación automática............................................................................... 41
14.2 – Automatización en Jupyter Notebooks............................................................. 41
14.3 – Frameworks de orquestación .......................................................................... 41
Consideraciones .................................................................................................. 41
15. Proyecto práctico: Scraping de datos deportivos ..................................................... 41
15.1. Planificación.................................................................................................... 41
15.2. Implementación paso a paso ........................................................................... 42
15.3. Análisis de los datos obtenidos ........................................................................ 42
16 Hoja de Ruta Completa: Cómo inspeccionar y scrapear cualquier sitio web .............. 42
FASE 1 – PLANIFICACIÓN ......................................................................................... 42
FASE 2 – INSPECCIÓN CON DEVTOOLS .................................................................... 43
Paso 1: Analiza la estructura HTML ........................................................................ 43
P á g i n a 6 | 49
Paso 2: Revisa si hay una API (pestaña Network) .................................................... 43
Paso 3: Verifica Cookies y Token (pestaña Application) ........................................... 44
FASE 3 – DESARROLLO DEL SCRAPER ....................................................................... 44
Paso 4: Decide la herramienta ............................................................................... 44
Paso 5: Crea un script de prueba ........................................................................... 44
Paso 6: Escala el scraping ..................................................................................... 44
Paso 7: Almacena los datos .................................................................................. 45
FASE 4 – AUTOMATIZACIÓN Y ESCALABILIDAD .......................................................... 45
Paso 8: Agrega logging........................................................................................... 45
Paso 9: Automatiza ............................................................................................... 45
FASE 5 – VALIDACIÓN Y CIERRE ................................................................................ 45
Paso 10: Validación de datos ................................................................................. 45
Paso 11: Backup y revisión final ............................................................................. 45
Anexo: Chrome DevTools para Web Scraping Profesional............................................... 45
Cómo abrir............................................................................................................... 45
1. Network (Red) – API, datos dinámicos y headers .................................................... 46
¿Qué puedes encontrar? ....................................................................................... 46
¿Para qué sirve?.................................................................................................... 46
Cómo usarlo paso a paso: ..................................................................................... 46
2. Elements – Estructura HTML ................................................................................. 46
¿Qué puedes encontrar? ....................................................................................... 46
¿Para qué sirve?.................................................................................................... 47
Cómo usarlo paso a paso ...................................................................................... 47
Ejemplo con Selenium .......................................................................................... 47
Ejemplo con BeautifulSoup ................................................................................... 47
3. Application – Cookies, sesión y almacenamiento local .......................................... 47
¿Qué puedes encontrar? ....................................................................................... 47
¿Para qué sirve?.................................................................................................... 47
Cómo usarlo paso a paso ...................................................................................... 47
Ejemplo de uso con requests ................................................................................ 48
4. Console – Probar selectores y ver variables JS........................................................ 48
¿Qué puedes encontrar? ....................................................................................... 48
¿Para qué sirve?.................................................................................................... 48
Cómo usarlo paso a paso ...................................................................................... 48
Relación con scraping ........................................................................................... 48
5. Sources, Security, Performance – Casos especiales............................................... 48
P á g i n a 7 | 49
¿Qué puedes encontrar? ....................................................................................... 48
¿Para qué sirve?.................................................................................................... 49
Cómo usarlo......................................................................................................... 49
Resumen: ¿Qué buscar en cada apartado? ............................................................... 49
Técnicas Avanzadas en DevTools .............................................................................. 49

P á g i n a 8 | 49
Introducción al Web Scraping
1.1- Qué es el Web Scraping
¿Qué es?
El web scraping es un proceso para extraer información automáticamente desde páginas
web, usando código.

¿Por qué usarlo?


• Para recolectar datos que solo están disponibles en una web.
• Cuando no hay API o esta no da toda la información que necesitas.

¿Cómo funciona?
1. El programa accede a la web (como un navegador).
2. Descarga el contenido HTML.
3. Busca y extrae los datos deseados (texto, tablas, imágenes…).
4. Guarda los datos en un archivo o base de datos.

Ventajas
• Ahorra tiempo y trabajo manual.
• Permite recolectar datos masivos (escala).
• Muy útil cuando los datos cambian constantemente (ej: estadísticas deportivas en
tiempo real).

Herramientas comunes (en Python)


• requests: descarga el contenido de la web.
• BeautifulSoup o lxml: analizan el HTML para encontrar los datos.
• pandas: organiza los datos en tablas.
• selenium: simula un navegador (para páginas dinámicas).

Ejemplo práctico

P á g i n a 9 | 49
Web Scraping vs API
Web Scraping API

Extrae datos del HTML Entrega datos en formato JSON

No oficial, frágil Oficial, más estable

Útil cuando no hay API Preferible si está disponible

En el deporte
Se usa para:
• Recoger resultados, clasificaciones, estadísticas.
• Obtener datos históricos o en tiempo real.
• Alimentar dashboards, modelos predictivos o informes.

Riesgos y cuidados
• Las webs pueden bloquearte si haces muchas peticiones.
• Algunas tienen restricciones legales (robots.txt, Términos de Servicio).
• La estructura de las páginas puede cambiar (tu scraper puede fallar).

En resumen
El web scraping es una técnica clave para acceder a información que está en la web pero
no se puede descargar fácilmente. Con Python y algunas librerías, puedes automatizar la
recolección de datos deportivos de forma rápida y eficaz.

1.2- Aplicaciones del Web Scraping en el Deporte


El deporte genera toneladas de datos: resultados, rankings, estadísticas, noticias, fichajes,
etc. Sin embargo, muchas veces esos datos están disponibles solo en páginas web, no
como archivos descargables ni APIs.
Aquí es donde el web scraping se vuelve una herramienta poderosa para:
• Analistas
• Entrenadores
• Scouts

Ejemplos por deporte


• Tenis: rankings ATP/WTA, históricos de partidos, estadísticas de servicio.
• Baloncesto: tiros, rebotes, asistencias, % de efectividad.
• Atletismo: marcas personales, récords mundiales, posiciones en torneos.

P á g i n a 10 | 49
Caso práctico
Objetivo: Analizar cómo evolucionó el rendimiento de los atletas olímpicos en los últimos
20 años.
Solución con scraping:
• El script navega por los sitios oficiales de cada edición olímpica.
• Extrae resultados por disciplina, país y atleta.
• Guarda todo en un Excel.
• El analista puede ahora filtrar, comparar y visualizar tendencias históricas.

Conclusión
El scraping automatiza la recolección de información pública deportiva, haciendo posible
el análisis avanzado sin necesidad de costosas bases de datos privadas.

1.3- ¿Qué es una página web? (Entender lo que vas a scrapear)


Antes de extraer datos, hay que saber dónde y cómo están almacenados.
Una página web no es más que un documento de texto (HTML) que el navegador interpreta
para mostrar una interfaz visual.

¿Qué contiene una página web?


• Texto: nombres, estadísticas, titulares.
• Tablas: resultados, clasificaciones.
• Imágenes: fotos de partidos, jugadores.
• Videos: resúmenes, entrevistas.
• Enlaces: hacia más información.
Todo eso está estructurado en HTML: lo que ves visualmente es solo la “cara bonita” de un
documento textual.

Analogía
Imagina una revista digital:
• Las tablas con puntuaciones están impresas: tú las ves.
• Pero si quieres automatizar la lectura, necesitas entender cómo están “escritas”
internamente.
• El HTML te dice: “en esta línea está el nombre del jugador”, “en esta otra el tiempo”.

¿Y qué hace el scraper?


El scraper lee el HTML directamente, como si tú leyeras la revista con una lupa, buscando
los datos que necesitas.

P á g i n a 11 | 49
Ejemplo HTML simplificado:

¿Qué significan <tr>, <th> y <td>?


• <tr> (table row) → Representa una fila en una tabla.
• <th> (table header) → Representa una celda de encabezado, como los títulos de las
columnas (Ej: "Jugador", "Goles").
• <td> (table data) → Representa una celda de datos común (Ej: "Messi", "3").
Significa:
• Fila 1 (<tr>) con encabezados: "Jugador", "Goles".
• Fila 2 (<tr>) con datos: "Messi", "3".

En resumen:
Etiqueta ¿Qué representa? ¿Para qué sirve en scraping?

<tr> Una fila Para recorrer los datos por jugador/partido

<th> Encabezado de columna Para saltarse el encabezado si no lo necesitas

<td> Celda de dato individual Para extraer los valores (nombre, puntos, etc.)

Scraping explicado línea por línea:

P á g i n a 12 | 49
1.4- Arquitectura Cliente-Servidor: El Baile Digital
Para entender cómo funciona el scraping, es clave saber cómo se comunican los
navegadores con los sitios web. Esto se basa en el modelo cliente-servidor.

¿Qué es?
• Cliente: el navegador o programa que hace una petición (tú, o tu scraper).
• Servidor: el sistema que "sirve" la página solicitada (como un camarero digital).
Cuando escribes una URL en el navegador, el cliente (tu navegador) envía una petición HTP
al servidor. El servidor responde con el contenido de la página (HTML, imágenes, etc.).

¿Qué pasa en scraping?


Tu scraper actúa como un cliente automatizado. Envía una petición con requests.get(...) y
luego recibe la respuesta (el HTML) para poder analizarla.

Ejemplo:

Importancia para scraping


• Cada petición genera tráfico para el servidor.
• Si haces demasiadas peticiones muy rápido, puedes ser bloqueado.
• Por eso es buena práctica:
o Hacer pausas entre peticiones.
o Imitar el comportamiento de un navegador real.
o No raspar datos sensibles o protegidos.

Resumen
Entender el modelo cliente-servidor te ayuda a escribir scrapers respetuosos y efectivos,
evitando bloqueos y errores por mal uso.

1.5- HTML y CSS: El Esqueleto y el Vestuario de la Web


Cuando haces scraping, lo que realmente estás haciendo es leer y entender el HTML de
una página. El HTML define la estructura de los elementos visibles: texto, imágenes,
botones, tablas, etc.

¿Qué es HTML?
HTML (HyperText Markup Language) es el lenguaje que organiza los contenidos de una
página web. Está compuesto por etiquetas como <h1>, <table>, <p>, etc.

P á g i n a 13 | 49
¿Qué es CSS?
CSS (Cascading Style Sheets) se encarga del aspecto visual: colores, tamaños, márgenes,
tipografía. Para scraping, el CSS no es esencial, pero a veces puede ayudarte a encontrar
elementos a través de sus clases.

Ejemplo básico de HTML

Cómo leerlo desde Python

¿Qué debes saber de HTML para scraping?


• Estructura jerárquica: hay elementos dentro de otros (anidación).
• Etiquetas clave:
o <table>, <tr>, <td> para datos tabulares.
o <div>, <span> para contenedores.
o Atributos como id o class ayudan a identificar elementos.

Resumen
Para hacer scraping, debes entender el HTML como un mapa:
Cuanto mejor lo leas, más rápido y preciso serás extrayendo los datos que necesitas.

P á g i n a 14 | 49
1.6- URL y su estructura: El mapa del tesoro
Cada vez que haces scraping, necesitas saber a qué página ir. Eso significa construir
correctamente la URL.

¿Qué es una URL?


Una URL (Uniform Resource Locator) es la dirección completa que identifica un recurso en
internet.

Ejemplo:
Partes de una URL
• https:// → Protocolo de acceso seguro.
• www.ejemplo.com → Dominio del sitio.
• /deportes/futbol/resultados → Ruta interna en el sitio.
• ?temporada=2024&liga=primera → Parámetros (filtran o modifican la información).

¿Por qué es importante para scraping?


• Muchas webs cambian su contenido según los parámetros en la URL.
• Puedes usar esos parámetros para automatizar búsquedas.

Ejemplo de generación dinámica de URLs:

Resultado:

Puedes usar estas URLs en un scraper para recorrer múltiples temporadas


automáticamente.

Resumen
Entender bien las URLs te permite:
• Navegar por sitios de forma automática.
• Controlar filtros como fechas, categorías, jugadores, etc.
• Acceder directamente a datos específicos sin hacer clics manualmente.

P á g i n a 15 | 49
1.7- Tipos de Web Scraping: Elige la estrategia correcta
Existen varias formas de hacer scraping, y elegir la correcta depende de cómo esté
construida la página web.

Comparativa de tipos de Web Scraping

Tipo Herramientas ¿Cuándo usarlo? Ventajas Desventajas


usadas

Estático requests, Cuando los Rápido, ligero, fácil No sirve si la página


BeautifulSoup, datos ya están de mantener usa JavaScript
lxml en el HTML al dinámico
cargar la página

Dinámico Selenium Cuando los Captura cualquier Más lento, requiere


datos se cargan cosa visible, más recursos, más
después de abrir flexible bloqueos
la página

API requests, Si la web ofrece Estable, legal, Puede requerir


(scraping pandas, json una API oficial o datos limpios y autenticación, no
indirecto) pública estructurados siempre existe

Manual Ninguna Solo para Simple, no Lento, no escalable,


pruebas rápidas necesita propenso a errores
o volcado programar
puntual de datos

Resumen
Seleccionar el tipo correcto de scraping ahorra tiempo, recursos y errores.
Empieza siempre por ver cómo carga la página: si los datos no están en el HTML,
necesitarás Selenium.

Tipo ¿Cuándo usarlo?


Estático Si los datos están visibles al cargar la página

Dinámico Si los datos aparecen tras hacer clic o esperar

API Siempre que esté disponible

Manual Solo como prueba o último recurso

1.8- Pasos del Web Scraping: Tu estrategia de juego


Hacer scraping no es solo copiar y pegar código: es un proceso que sigue pasos bien
definidos, como una receta. A continuación, te muestro el flujo típico para capturar datos
correctamente desde cualquier web:

P á g i n a 16 | 49
1. Planificación
• Define qué datos necesitas (ej. nombres de jugadores, estadísticas, fechas).

• Revisa si la web lo permite legalmente (verifica su archivo robots.txt o sus términos


de uso).

• Averigua si hay una API oficial (si existe, úsala en vez de hacer scraping tradicional).

2. Inspección de la página
• Abre la página en el navegador.

• Haz clic derecho > “Inspeccionar” (abre el panel de desarrollador).

• Examina el HTML para localizar dónde están los datos (en qué etiquetas, clases,
tablas...).

3. Escribir el scraper
• Usa requests o selenium según el tipo de web.

• Usa BeautifulSoup o lxml para navegar el HTML.

• Extrae los datos y guárdalos en una lista, diccionario o DataFrame.

4. Limpieza de datos
• Quita espacios, saltos de línea, etiquetas HTML residuales.

• Convierte strings a números si es necesario.

5. Almacenamiento
• Guarda los datos en formato .csv, .json, o directamente en una base de datos.

• Usa pandas.to_csv() o librerías como sqlite3 para almacenar información.

6. Automatización
• Usa bucles para recorrer páginas.

• Añade sleep() para evitar bloqueos por peticiones muy rápidas.

• Programa tu scraper para que corra cada cierto tiempo (con cron o schedule).

P á g i n a 17 | 49
Ejemplo simple del flujo:

Resumen
Seguir estos pasos garantiza que tu scraping sea:

• Organizado

• Reutilizable

• Escalable

• Menos propenso a errores o bloqueos

1.9- XPath: Tu GPS para encontrar datos


Cuando el HTML es complejo o confuso, encontrar los datos exactos puede ser difícil.
Ahí entra XPath: un lenguaje que te permite localizar elementos específicos dentro del árbol
HTML.

¿Qué es XPath?
• Es un sistema para navegar estructuras XML o HTML.

• Funciona como una ruta: “ve al tercer párrafo dentro de la segunda tabla”.

Ejemplo HTML:

P á g i n a 18 | 49
XPath para obtener los puntos de LeBron:

Traducción: “Busca una tabla con id='resultados', ve a la segunda fila (tr[2]), y toma la
segunda celda (td[2])”.

XPath vs selectores CSS


XPath Selectores CSS

Muy preciso y flexible Más fáciles de escribir

Ideal para estructuras profundas Más legible para principiantes

Funciona mejor con lxml Usado en BeautifulSoup

¿Cómo usarlo en scraping?


Con lxml:

¿Cómo obtener un XPath?


1. Abre la página web.
2. Clic derecho sobre el dato → "Inspeccionar".
3. Clic derecho sobre el código HTML → "Copy" > "Copy XPath".
4. Pégalo en tu código.

Resumen
• XPath te da precisión milimétrica para encontrar datos difíciles.
• Es ideal cuando:
o Hay muchas etiquetas similares.
o Los datos están muy anidados.
• Puedes usarlo en conjunto con otras herramientas para obtener lo que necesites
sin margen de error.

P á g i n a 19 | 49
1.10- Tipos de páginas web: Eligiendo la estrategia correcta
Antes de raspar una web, debes entender cómo se construye y se comporta.
Existen varios tipos de páginas, y cada una requiere un enfoque distinto de scraping.

1. Páginas Estáticas
• Definición: Todo el contenido está disponible desde el inicio en el HTML.
• Ejemplo: Una tabla de resultados fija que ves al cargar la página.
• Scraping recomendado: requests + BeautifulSoup o pandas.read_html()
• Ventajas: Fáciles, rápidas y estables.

2. Páginas Dinámicas
• Definición: Los datos no están en el HTML inicial, se cargan después con JavaScript.
• Ejemplo: Un ranking que aparece luego de hacer scroll o clic.
• Scraping recomendado: selenium
• Ventajas: Puedes raspar cualquier contenido visible.
• Desventajas: Más lentas, consumo de recursos.

3. Páginas con API


• Definición: Sitios que tienen una API (interfaz para obtener datos estructurados).
• Ejemplo: Un portal deportivo que te permite pedir estadísticas en formato JSON.
• Scraping recomendado: requests + análisis JSON
• Ventajas: Preciso, limpio, legal (si es pública).
• Desventajas: A veces requiere claves o autenticación.

4. Infinite Scroll
• Definición: Sitios que cargan más contenido cuando haces scroll hacia abajo.
• Ejemplo: Calendarios deportivos o redes sociales.
• Scraping recomendado:
o selenium para simular el scroll.
o A veces APIs ocultas que cargan contenido por AJAX.
• Desafíos: Simular el comportamiento humano (esperas, clics, etc.).

5. Sitios Protegidos
• Definición: Piden login, CAPTCHA, o bloquean bots.
• Ejemplo: Estadísticas premium solo accesibles con suscripción.
• Scraping recomendado: Técnicas avanzadas con selenium, session cookies, login
automatizado.
• Precaución: Estos sitios suelen prohibir scraping en sus términos.
P á g i n a 20 | 49
Resumen
Tipo de página Herramienta sugerida Dificultad Comentario

Estática requests + BS/pandas Baja Ideal para empezar

Dinámica selenium Media Requiere simular navegador

Con API requests + JSON Baja Preferible si está disponible

Infinite Scroll selenium + scroll Alta Exige controlar eventos

Protegida/Login selenium + manejo de sesión Muy alta Riesgo legal o técnico alto

1.11 – Consideraciones éticas y legales: Jugando limpio


El web scraping tiene poder… y también responsabilidad. No todo lo que se puede raspar
debe rasparse.

¿Es legal?
Depende. El scraping no está prohibido por defecto, pero debes tener en cuenta:
• Términos de uso: Algunos sitios prohíben expresamente extraer datos.
• Derechos de autor: Aunque los datos estén públicos, su uso puede estar
restringido.
• Propiedad de datos: Las webs pueden ser dueñas del contenido, no tú.

¿Qué es robots.txt?
Archivo que indica a los bots qué partes del sitio están permitidas o bloqueadas.
Ejemplo:

Aunque no es una ley, ignorarlo se considera mala práctica.

Buenas prácticas
• Identifícate como bot si puedes (User-Agent personalizado).
• No hagas miles de peticiones por minuto. Usa time.sleep().
• Evita raspar datos personales (nombre + email + dirección...).
• No publiques ni vendas los datos sin permiso.
• Si hay una API, úsala primero.

Casos problemáticos
• Webs con contenido protegido por login.
• Sitios con información sensible (salud, cuentas, niños).
P á g i n a 21 | 49
• Scraping masivo sin pausas → puedes ser baneado o recibir advertencias legales.

En resumen
El scraping es una herramienta poderosa para el análisis y la automatización, pero debe
usarse con criterio. Siempre respeta los límites técnicos, legales y éticos del sitio que
visitas.

2.1- Herramientas para Web Scraping con Python


Para hacer scraping necesitas librerías especializadas. Aquí repasamos las más comunes
y útiles:

1. Requests
• ¿Qué hace? Permite hacer peticiones HTTP (abrir una página web y traer su
contenido HTML).
• ¿Cuándo usarla? En sitios estáticos, donde el contenido está presente desde el
inicio.
• Ventajas: Simple, ligera, compatible con otras librerías.
• Uso típico:

2. BeautifulSoup
• ¿Qué hace? Analiza el HTML y permite extraer elementos fácilmente.
• ¿Cuándo usarla? Para navegar estructuras HTML y extraer datos.
• Ventajas: Sintaxis sencilla, buena documentación.
• Uso típico:

3. lxml
• ¿Qué hace? Analizador rápido de HTML/XML, permite usar XPath.
• ¿Cuándo usarla? Cuando necesitas rapidez o precisión quirúrgica con XPath.
• Ventajas: Muy rápida, ideal para estructuras complejas.
• Uso típico:

P á g i n a 22 | 49
4. Selenium
• ¿Qué hace? Controla un navegador real (Chrome, Firefox) de forma automática.
• ¿Cuándo usarla? En páginas dinámicas o que requieren interacción (clics, scroll,
login).
• Ventajas: Capta todo lo que vería un humano.
• Desventajas: Más lenta, más consumo de recursos.
• Uso típico:

5. Pandas (read_html)
• ¿Qué hace? Extrae directamente tablas HTML y las convierte en DataFrames.
• ¿Cuándo usarla? Cuando las tablas están bien formateadas en la página.
• Ventajas: Súper rápido para páginas simples.
• Limitación: Solo sirve con tablas limpias y visibles.

2.2- Comparación de herramientas: ¿cuál usar y cuándo?


Aquí tienes una tabla comparativa para decidir rápidamente según el tipo de sitio y tarea.

P á g i n a 23 | 49
Tabla de comparación
Herramienta ¿Para qué sirve? Nivel de Ventajas Cuándo evitarla
página ideal

requests Descargar HTML Estáticas Rápida, fácil Si la página


necesita
interacción

BeautifulSoup Extraer datos de Estáticas Sencilla, No apta para XPath


HTML flexible

lxml Extraer con XPath Estáticas Precisión, Menos intuitiva para


velocidad principiantes

selenium Controlar Dinámicas Captura todo, Lenta, pesada


navegador real incluso JS

pandas.read_html Extraer Estáticas (con Ultra rápida y No sirve si la tabla


directamente tablas) limpia no está clara
tablas

En resumen
• Si el sitio es estático y simple → usa requests + BeautifulSoup.
• Si necesitas precisión y velocidad con HTML complejo → usa lxml + XPath.
• Si el sitio es dinámico o interactivo → usa selenium.
• Si hay tablas limpias → usa pandas.read_html() y ya tienes tus datos.

3. Web Scraping: Una sola página estática


3.1 – pandas.read_html(): Una herramienta simple pero poderosa
¿Qué es?
Una función de pandas que detecta y extrae automáticamente tablas HTML desde una
URL.

Uso básico

Ventajas
• Extremadamente rápida.
• Convierte automáticamente a DataFrame.
• Ideal para scraping de resultados deportivos estructurados.
P á g i n a 24 | 49
Desventajas
• Solo funciona con tablas visibles y bien estructuradas.
• No detecta datos si la tabla está construida con JavaScript.

Consejos avanzados
• Puedes añadir parámetros como match="Clasificación" para buscar una tabla
específica.
• Conviene inspeccionar el HTML para saber cuántas tablas hay antes de usarlas.

Cuándo no usarlo
• Si la tabla no está renderizada directamente en el HTML (por JavaScript).
• Si hay que hacer scroll, clics o login.

3.2 – requests: Tu pase VIP al contenido web


¿Qué es?
Una librería para hacer peticiones HTTP y descargar el contenido de una página.

Uso básico

Ventajas
• Ligero, rápido y fácil de combinar con BeautifulSoup, lxml o pandas.

Consejos avanzados
• Puedes modificar los headers para simular un navegador:

Cuándo evitarlo
• Cuando el contenido se genera con JavaScript → en ese caso usa selenium.

3.3 – lxml: El analizador de alta velocidad


¿Qué es?

Un parser que trabaja con estructuras XML y HTML, ideal para usar XPath y hacer
scraping de forma precisa.

P á g i n a 25 | 49
Uso básico

Ventajas
• Extremadamente rápido.
• Muy preciso usando XPath (ideal para páginas complejas o confusas).

Limitaciones
• Sintaxis de XPath menos intuitiva si estás empezando.
• No detecta contenido cargado dinámicamente (JS).

Cuándo evitarlo
• Si prefieres una sintaxis más “Pythonica”, empieza con BeautifulSoup.

3.4 – BeautifulSoup: El chef experto en datos web


¿Qué es?
Una de las herramientas más populares para analizar y extraer datos del HTML.

Uso básico

Ventajas
• Fácil de aprender.
• Muy legible.
• Compatible con HTML mal formateado.

Consejos avanzados
• Puedes usar selectores CSS:
P á g i n a 26 | 49
Cuándo evitarlo
• Si necesitas búsquedas extremadamente precisas con estructuras complejas, es
mejor lxml.

Comparación rápida (Resumen de este bloque)


Herramienta Ideal para... Nivel Fortalezas Cuándo evitarla
read_html() Tablas HTML limpias Bajo Muy rápida y Si no hay tabla en el
directa HTML
requests Descargar contenido Bajo Simple, base para Si necesitas interacción
HTML todo
lxml XPath y estructuras Medio Precisión, Si estás empezando
complejas velocidad
BeautifulSoup Navegar HTML Bajo Fácil de usar, Estructuras complejas
visualmente versátil o lentas

3.5 – XPath Avanzado: Precisión quirúrgica en la extracción


¿Qué es XPath avanzado?
XPath es como un GPS para navegar el HTML. Con XPath avanzado, puedes ser aún más
preciso al buscar datos por texto, clase, posición u otros atributos.

Técnicas avanzadas con ejemplos


Buscar por texto exacto

Encuentra la celda (<td>) que contiene exactamente “Lionel Messi”.


Contener una palabra clave

Busca elementos que incluyan la palabra “gol”.


Buscar por clase

Encuentra elementos con una clase exacta o parcial.


Usar posición

Segunda fila, tercera columna de una tabla con id “resultados”.

P á g i n a 27 | 49
Recomendaciones
• Usa contains() para búsquedas flexibles.
• Combina criterios con and, or si es necesario.
• Usa Chrome: clic derecho > Inspeccionar > Copiar XPath → punto de partida útil.

En resumen
XPath avanzado permite encontrar exactamente el dato que necesitas, incluso en webs
muy complejas. Cuanto mejor domines XPath, más eficiente será tu scraper.

4. Web Scraping: Paginación


4.1 – Técnicas de paginación
¿Qué es la paginación?
Muchos sitios no muestran todos los datos en una sola página. Los reparten en “páginas”
de 10, 20 o 50 elementos, que puedes recorrer haciendo clic en “Siguiente”.

Tipos comunes de paginación


1. Enlace clásico con número en URL

Puedes recorrerlas con un bucle cambiando el número de página.


2. Enlace “Siguiente” en HTML
Botón o link que dice “Next” o “>>”.
Necesitas selenium para simular el clic.
3. Scroll infinito
El contenido se carga cuando bajas. Requiere scroll con selenium.

Código ejemplo: paginación con bucle

P á g i n a 28 | 49
4.2 – Manejo de múltiples páginas
Cuando tienes varias páginas de resultados, debes:
1. Detectar el patrón de la URL o botón.
2. Iterar sobre las páginas (con for o while).
3. Combinar los datos extraídos en una sola estructura (lista, DataFrame).

Consejos prácticos
• Asegúrate de no repetir o saltarte páginas.
• Usa sleep() para no sobrecargar el servidor.
• Si usas selenium, recuerda esperar que cargue la nueva página antes de continuar.

En resumen
La paginación es uno de los retos más frecuentes del scraping real. Saber cómo recorrer
múltiples páginas te permitirá extraer grandes volúmenes de datos organizados por partes.

5 – Web Scraping: Selenium


¿Qué es Selenium?
Selenium es una herramienta que controla un navegador real (como Chrome o Firefox)
mediante código. Es ideal para páginas donde los datos no están en el HTML al principio,
sino que se cargan después de hacer clics, esperar o interactuar.

5.1 – Sitios Web Dinámicos y JavaScript


• Un sitio dinámico es aquel que modifica su contenido sin recargar toda la página.
• Normalmente utiliza JavaScript para mostrar los datos tras un evento (clic, scroll,
etc.).

¿Cómo detectarlo?
• Abre el sitio → clic derecho → "Ver código fuente": si no ves los datos ahí, pero sí en
pantalla, la página es dinámica.
• Usa "Inspeccionar elemento" → Red (Network) para ver las cargas.

5.2 – Introducción a Selenium


Instalación rápida
Además, necesitas un WebDriver (ej: chromedriver) compatible con tu navegador.

P á g i n a 29 | 49
Uso básico

Abre el sitio como un humano. Ya puedes usar BeautifulSoup o XPath para analizar el HTML.

5.3 – Carga dinámica: scroll, botones, espera


Algunos datos no se cargan hasta que haces scroll o clic.

Simular clic:

Simular scroll:

Esperar:

5.4 – Acciones típicas con Selenium


• click() → Clic en un botón o enlace.

• send_keys() → Escribir texto en un formulario.

• get_attribute() → Leer atributos (ej: URLs).

• find_element(By.ID, ...) → Buscar elementos en la página.

• execute_script() → Ejecutar código JavaScript directamente.

5.5 – Descarga automática del WebDriver + Headless mode


Descargar WebDriver automáticamente:

P á g i n a 30 | 49
Headless (sin abrir ventana):

5.6 – Scrolling avanzado y ejecución de JavaScript


Puedes ejecutar scripts personalizados, simular scroll lento o infinito:

5.7 – Scrolling Suavizado (Smooth)

Puedes usarlo con sleep() para controlar el ritmo del scroll.

5.8 – Formularios y login

5.9 – Modo incógnito

5.10 – Páginas caóticas y XPaths personalizados


Cuando el HTML es complejo, puedes usar XPath avanzados para encontrar los datos más
profundamente anidados o con estructuras inestables.

5.11 – Selenium con proxies


Para evitar bloqueos o simular diferentes IPs:

P á g i n a 31 | 49
5.12 – Recomendaciones prácticas
• Siempre prueba con headless + sleep() para evitar detección.
• Usa WebDriverWait para esperar que se cargue contenido en lugar de time.sleep()
fijo.
• Combina Selenium con BeautifulSoup o lxml para analizar el contenido una vez
cargado.

En resumen
Selenium te permite hacer scraping de cualquier contenido visible, incluso si necesitas
interactuar con la web como un usuario real. Eso sí, es más lento y complejo, por lo que
úsalo solo cuando requests y pandas no funcionen.

6 – Web Scraping Nivel 4: Evitando Detección


Los sitios web pueden detectar y bloquear scrapers si no te comportas como un usuario
normal. Aquí van las técnicas para “camuflar” tu scraper.

6.1 – Scraping en la nube


• Ejecutar tu scraper desde un servidor (Google Colab, AWS, etc.) en vez de tu PC.
• Ventaja: IP distinta, mayor estabilidad.
• Ideal para scraping automatizado y regular.

6.2 – Uso de proxies


• Un proxy redirige tu tráfico a través de otra IP.
• Te permite cambiar de IP y simular ubicaciones distintas.

6.3 – IPs aleatorias (random proxy pool)


• Puedes tener una lista de proxies y rotar uno distinto en cada petición.
• Así evitas bloqueos por IP fija.

6.4 – Headers personalizados


Los navegadores envían información como "User-Agent" que identifica el tipo de
dispositivo.

P á g i n a 32 | 49
Muchos sitios bloquean bots que no envían cabeceras realistas.

6.5 – Manejo de cookies


Algunas páginas dependen de cookies para mostrar contenido. Puedes guardar cookies
tras un login o simular cookies válidas.

6.6 – Time.sleep()
Pausar tu scraper entre peticiones:

Imita el ritmo humano y evita sobrecargar el servidor.

6.7 – WebDriverWait (mejor que sleep)


Esperar hasta que aparezca un elemento, en lugar de un tiempo fijo.

6.8 – Randomización del tiempo

Variar los tiempos de espera te hace más difícil de detectar.

6.9 – Concurrencia (opcional)


Usar múltiples hilos o procesos para acelerar scraping sin saturar un solo hilo.
Ejemplo avanzado: concurrent.futures, asyncio, multiprocessing.

P á g i n a 33 | 49
Consideraciones éticas
• No intentes evitar bloqueos en sitios que explícitamente lo prohíben.
• Usa estas técnicas en webs donde el scraping sea legítimo y responsable.

7 – Web Scraping Nivel 5: Scraping por API


¿Qué es una API?
Una API es una forma oficial y estructurada de acceder a los datos de un sitio.
En lugar de leer el HTML, haces peticiones y recibes datos (normalmente en JSON).

¿Ventajas de usar APIs?


• Legalmente más segura.
• Más rápida.
• Datos limpios, sin HTML.
• Mejor documentación.

7.1 – Revisar requerimientos en el navegador


Abre la web > clic derecho > “Inspeccionar” > pestaña “Network” > filtra por XHR o fetch.
Ahí verás si hay alguna API oculta que puedes usar.

7.2 – Extracción de <iframe>


Un <iframe> es una página dentro de otra. Muchas veces los datos están en ese iframe y
puedes raspar su URL directamente.

7.3 – Extracción desde etiquetas <script>


Algunos datos se cargan como variables en el HTML.

Puedes buscar ese bloque de texto y extraer los datos con regex o json.loads().

7.4 – requests-html para carga dinámica


Librería que combina requests con JavaScript rendering (alternativa liviana a selenium).

P á g i n a 34 | 49
En resumen
Siempre que puedas, usa una API: es más limpio, rápido y confiable.
Si no existe o es limitada, puedes combinar scraping clásico, Selenium y extracción desde
iframes o scripts.

8 – Web Scraping Nivel 6: Cookies, Autenticación y


Captchas
8.1 – Aceptación de Cookies
• Algunas webs requieren que aceptes cookies para mostrar contenido.
• En selenium, puedes hacer clic en el botón de aceptar:

En requests, puedes usar una sesión para guardar y reutilizar cookies automáticamente:

8.2 – Tipos de Autenticación


a) Autenticación básica HTTP
• Se incluye en los headers:

b) Autenticación con formularios


• Requiere simular un login típico usando POST:

P á g i n a 35 | 49
c) Autenticación OAuth
• Usada por redes sociales y APIs (más compleja).
• Se gestiona con tokens de acceso temporales.
• Requiere un flujo de autorización.

d) Autenticación por token


• El token va en los headers:

8.3 – Detección y uso de cookies de autenticación


• Muchas veces, al iniciar sesión, el servidor envía una cookie especial.
• Debes capturarla y reutilizarla en siguientes peticiones.

8.4 – Manejo de sesiones


• Usar requests.Session() mantiene las cookies entre peticiones.
• Ideal para login persistente, navegación paginada o interacciones múltiples.

8.5 – Resolución de captchas


• Los captchas bloquean bots.
• Soluciones:
o Manual: mostrar el captcha al usuario y que lo resuelva.
o OCR con pytesseract (para imágenes simples).
o Servicios pagos como 2Captcha, Anti-Captcha.

Evita intentar romper captchas de sitios donde esté prohibido por términos legales.

9 – Web Scraping Nivel 7: Cloudflare


Cloudflare protege sitios del tráfico sospechoso (incluyendo bots).

9.1 – Extracción de sitios protegidos por Cloudflare


Síntomas:
• El sitio carga en navegador pero no con requests.

P á g i n a 36 | 49
• Devuelve códigos como 403 o páginas de verificación.

9.2 – Uso de cloudscraper


Librería específica para saltar protecciones de Cloudflare:

10 – Web Scraping Nivel 8: Descarga de Archivos


Multimedia
10.1 – Descarga de Imágenes

10.2 – Descarga de PDFs, documentos, etc.


• Funciona igual que con imágenes.
• Verifica que el content-type sea correcto (application/pdf, image/png, etc).

10.3 – Descarga de videos


• Complicada si el video se transmite en streaming.
• Puedes:
o Identificar el archivo .mp4 o .m3u8.
o Usar youtube-dl para plataformas conocidas.

P á g i n a 37 | 49
11 – Web Scraping Responsable y Ético
11.1 – ¿Por qué es importante?
• El scraping puede impactar negativamente en servidores si se abusa.
• Puede violar políticas de uso o incluso leyes si incluye datos sensibles.

11.2 – Buenas prácticas


• Respetar robots.txt del sitio.
• Usar User-Agent realista.
• Limitar la frecuencia de peticiones (sleep()).
• No scrapear datos privados ni personales.
• No hacer scraping en sitios que lo prohíban explícitamente.

11.3 – Controlar velocidad

12 – Paralelización en Web Scraping


Cuando necesitas scrapear miles de páginas, hacerlo de una en una es ineficiente.
La paralelización te permite hacer múltiples tareas al mismo tiempo.

12.1 – Técnicas comunes


1. Multithreading (varios hilos dentro de un mismo proceso)

Útil para: tareas ligeras como peticiones simples.

P á g i n a 38 | 49
2. Multiprocessing (múltiples procesos independientes)

Útil para: procesos más pesados que consumen CPU.

3. Asincronía con asyncio

Útil para: scraping masivo, sin bloquear el flujo de ejecución.

Consideraciones
• No uses paralelización sin pausas: podrías bloquear el sitio objetivo.
• Aumenta velocidad, pero también complejidad.
• Haz pruebas pequeñas antes de lanzar en producción.

13 – Puntos de Control: Logging y Alertas


Es importante monitorear tu scraper para saber si falla, cuántas páginas procesó, o si se
detuvo inesperadamente.

P á g i n a 39 | 49
13.1 – Logging (registro de eventos)

Guarda mensajes importantes en un archivo para revisarlos luego.

13.2 – Alertas
Puedes configurar alertas por:
• Email (smtplib)
• Slack API
• Telegram bots
• Webhooks
Ejemplo simple (en consola):

13.3 – Puntos clave a registrar


• Página actual
• Fecha/hora
• Errores capturados
• Cantidad de datos extraídos

13.4 – Monitoreo de rendimiento


Usa librerías como psutil para ver el uso de CPU, memoria, tiempo de ejecución, etc.

13.5 – Resumen periódico


Puedes crear un resumen al final del scraping:

14 – Automatización de Descarga Periódica


A veces necesitas que tu scraper corra todos los días, semanas o meses sin intervención
manual.
P á g i n a 40 | 49
14.1 – Programación automática
En Windows:
• Usa el Programador de tareas.
• Configura un script .py o .bat que se ejecute en el horario deseado.

14.2 – Automatización en Jupyter Notebooks


• Puedes usar la librería schedule:

14.3 – Frameworks de orquestación (nivel profesional)


Apache Airflow
• Sistema para automatizar y monitorizar flujos de datos complejos.
• Ideal cuando tienes varios scrapers o pasos encadenados.
Scrapy + cron
• scrapy incluye su propio sistema de logs, programación y exportación.

Consideraciones
• Automatizar implica también controlar errores (fallos de conexión, formato, etc.).
• Siempre combina automatización con logging y alertas para evitar sorpresas.

15. Proyecto práctico: Scraping de datos deportivos


15.1. Planificación
• Define qué datos necesitas (ej: resultados de fútbol).
• Estudia el sitio web: ¿los datos están en el HTML? ¿Se generan por JS? ¿Requiere
login?
• ¿Hay paginación o scroll?
• ¿Qué formato tienen los datos (tabla, lista, JSON)?
P á g i n a 41 | 49
15.2. Implementación paso a paso

15.3. Análisis de los datos obtenidos

16 Hoja de Ruta Completa: Cómo inspeccionar y


scrapear cualquier sitio web

FASE 1 – PLANIFICACIÓN
Antes de abrir el navegador:
1. Define tu objetivo
o ¿Qué datos necesitas exactamente?
o ¿Dónde están (partidos, rankings, resultados, fichajes…)?
2. Estudia el sitio web manualmente
o ¿Tiene paginación? ¿Scroll infinito?
o ¿Requiere login?
o ¿Existe una API? (investiga en Google: "API site:sitio.com")

P á g i n a 42 | 49
FASE 2 – INSPECCIÓN CON DEVTOOLS
Abre la web en Google Chrome y presiona F12 o clic derecho → "Inspeccionar".

Paso 1: Analiza la estructura HTML


• Ve a la pestaña "Elements"
• Ubica el dato que necesitas (clic derecho sobre él en la página > "Inspeccionar")
• Examina su etiqueta (<div>, <span>, <td>, etc.)
• Copia su XPath o selector CSS:
o Clic derecho > Copy > "Copy XPath" o "Copy selector"
Código ejemplo para usar ese XPath para extraer celda:

Paso 2: Revisa si hay una API (pestaña Network)


1. Ve a la pestaña "Network"
2. Filtra por XHR o Fetch
3. Recarga la página (F5)
4. Observa las peticiones:
o ¿Hay una URL con .json, .php, .api?
o ¿Devuelve los datos que ves en pantalla?
5. Haz clic en esa petición:
o Copia la URL completa
o Examina la pestaña "Headers":
▪ Método: GET o POST
▪ Headers: User-Agent, Authorization, Cookies
6. En la pestaña "Response", verifica:
o ¿Los datos están en texto, HTML o JSON?
Código ejemplo si es API JSON:

P á g i n a 43 | 49
Paso 3: Verifica Cookies y Token (pestaña Application)
• Ve a "Application" → Cookies
• Verifica si se guarda una cookie de sesión
• Copia la cookie y úsala con requests.Session():

FASE 3 – DESARROLLO DEL SCRAPER


Paso 4: Decide la herramienta
Situación Herramienta recomendada
HTML estático requests + BeautifulSoup
Estructura compleja lxml + XPath
Página con JavaScript dinámico Selenium
API disponible requests + .json()
Login o interacción Selenium + login automático

Paso 5: Crea un script de prueba


• Descarga 1 sola página
• Extrae solo un par de datos
• Verifica que funciona sin errores

Paso 6: Escala el scraping


• Agrega bucles para:
o Recorrer múltiples páginas (?page=1, ?jornada=2, etc.)
o Procesar tablas largas
• Añade sleep() o WebDriverWait entre peticiones:
P á g i n a 44 | 49
Paso 7: Almacena los datos

FASE 4 – AUTOMATIZACIÓN Y ESCALABILIDAD


Paso 8: Agrega logging

Paso 9: Automatiza
Con schedule (dentro del script)

FASE 5 – VALIDACIÓN Y CIERRE


Paso 10: Validación de datos
• Revisa manualmente algunas filas
• Valida tipos (int, str, fechas)
• Verifica que no haya duplicados

Paso 11: Backup y revisión final


• Guarda el scraping con fecha (resultados_2025_05.csv)
• Anota observaciones para futuras ejecuciones

Anexo: Chrome DevTools para Web Scraping


Profesional
Cómo abrir
• Clic derecho en el navegador → "Inspeccionar"
• O presiona F12

P á g i n a 45 | 49
1. Network (Red) – API, datos dinámicos y headers
¿Qué puedes encontrar?
• Peticiones que hace la página para cargar datos (AJAX, JSON, API).
• URL completa de la fuente de datos.
• Método HTTP (GET o POST).
• Cabeceras como cookies, tokens de autenticación, User-Agent.
• El contenido que se devuelve: JSON, HTML parcial, etc.

¿Para qué sirve?


Para encontrar APIs no documentadas o estructuras que se cargan dinámicamente y que
puedes scrapear sin necesidad de analizar HTML.

Cómo usarlo paso a paso:


1. Abre DevTools (F12), ve a la pestaña "Network".
2. Recarga la página.
3. Filtra por “XHR” o “Fetch”.
4. Haz clic sobre una petición relevante.
5. Examina:
o Headers → URL, método, cookies, autorización.
o Response → contiene los datos que verás en pantalla.
Ejemplo de uso con código:

2. Elements – Estructura HTML


¿Qué puedes encontrar?
• Todo el HTML renderizado de la página.
• La ubicación exacta del dato que ves en pantalla.
• Atributos útiles como id, class, data-*, href.

P á g i n a 46 | 49
¿Para qué sirve?

Para identificar en qué etiquetas están los datos y con qué selectores acceder a ellos
mediante scraping con BeautifulSoup, lxml o selenium.

Cómo usarlo paso a paso:


1. Clic derecho sobre el dato que te interesa → “Inspeccionar”.
2. Te lleva al fragmento HTML correspondiente.
3. Clic derecho sobre la línea → “Copy” → “Copy XPath” o “Copy selector”.

Ejemplo con Selenium:

Ejemplo con BeautifulSoup:

3. Application – Cookies, sesión y almacenamiento local


¿Qué puedes encontrar?
• Cookies activas (como identificadores de sesión).
• Almacenamiento localStorage y sessionStorage.
• Tokens de acceso o claves guardadas por el navegador.

¿Para qué sirve?

Para mantener sesiones después del login o acceder a recursos protegidos por token sin
tener que automatizar el login cada vez.

Cómo usarlo paso a paso:


1. Ve a la pestaña "Application".
2. En el menú izquierdo, abre “Cookies”.
3. Selecciona el dominio actual.
4. Copia el nombre y valor de las cookies importantes (ej: sessionid).

P á g i n a 47 | 49
Ejemplo de uso con requests:

4. Console – Probar selectores y ver variables JS


¿Qué puedes encontrar?
• Ejecutar JavaScript directamente.
• Probar selectores CSS con document.querySelector().
• Ver variables cargadas dinámicamente que no están en el HTML.

¿Para qué sirve?

Para probar si los datos pueden accederse desde el frontend JavaScript, o si hay
estructuras internas que puedes replicar en tu scraper.

Cómo usarlo paso a paso:


1. Abre la pestaña "Console".
2. Escribe:

3. Presiona Enter para ver si devuelve el valor que buscas.

Relación con scraping:

Si obtienes el dato con JS, puedes usar el mismo selector con Selenium:

5. Sources, Security, Performance – Casos especiales


¿Qué puedes encontrar?
• Archivos JavaScript (.js) que generan los datos dinámicos.
• Ver si la web está protegida por Cloudflare, HTTPS, certificados, etc.
• Funciones JS que construyen URLs, tokens o estructuras de datos.

P á g i n a 48 | 49
¿Para qué sirve?

Para entender cómo la web genera datos en páginas complejas. A veces, las URLs que
necesitas están “ocultas” en funciones JavaScript.

Cómo usarlo:
• Ve a la pestaña "Sources".
• Abre los archivos .js.
• Usa Ctrl+F para buscar palabras clave como fetch, token, resultados, etc.
• Examina cómo se construyen las URLs o los tokens que luego puedes replicar en tu
scraper.

Resumen: ¿Qué buscar en cada apartado?


Prioridad Herramienta Qué buscar allí Cuándo usarlo
Alta Network APIs, respuestas en JSON, Siempre que los datos no estén
headers, tokens directamente en el HTML
Alta Elements Etiquetas, estructuras, Cuando necesitas scrapear HTML
selectores, clases directamente
Media Application Cookies, sessionid, auth Cuando el sitio requiere login o
tokens token persistente
Media Console Probar selectores JS, ver En webs dinámicas o con
datos cargados en JS frameworks modernos
Baja Sources / Funciones fetch, scripts Cuando todo lo anterior no te da
Others ocultos, rendimiento acceso al dato

Técnicas Avanzadas en DevTools


Técnica Cómo hacerlo
Copiar XPath o selector Clic derecho sobre el dato → "Copy" → "Copy XPath" o "Copy selector"

Preservar log en Network Marca "Preserve log" antes de navegar a otras páginas

Ver valores dinámicos Usa Console con JS: document.querySelector(...)

Captura de cookies En pestaña Application, sección “Cookies”

P á g i n a 49 | 49

También podría gustarte