Módulo 7: Introducción a APIs y Web Scraping
Tema 24: Uso de la biblioteca requests
Objetivo del tema
Aprender a realizar peticiones HTTP desde Python utilizando la biblioteca requests, uno de los módulos más utilizados para interactuar con APIs REST, descargar información desde la web y comunicarse con servidores.
1. ¿Qué es requests?
requests es una biblioteca de Python que permite enviar peticiones HTTP de forma sencilla y legible.
Se utiliza para:
- Consumir APIs REST
- Descargar recursos web
- Enviar datos a un servidor
- Autenticarse en servicios externos
- Consultar datos en formato JSON, XML, HTML, etc.
Es más simple y amigable que el módulo estándar urllib.
2. Instalación de la biblioteca
pip install requestsY luego se importa en tu script:
3. Tipos de peticiones HTTP más comunes
GET
Obtener información del servidor (ej.: consultar una API).
POST
Enviar datos al servidor (formularios, login, subir datos).
PUT / PATCH
Actualizar datos.
DELETE
Eliminar información.
4. Enviar una petición GET
Explicación:
status_code→ código HTTP (200 = OK)text→ contenido de la respuesta en formato texto
5. Respuestas en formato JSON
La mayoría de APIs devuelven datos en JSON.
Puedes convertir la respuesta a un diccionario:
6. Enviar parámetros en la URL (query params)
Ejemplo:
https://api.com/users?edad=30&pais=ES
En requests:
7. Peticiones POST (enviar datos)
Observaciones:
json=payload→ envía datos en JSON automáticamente.- También puedes usar
data=payloadpara enviar formularios.
8. Enviar cabeceras (Headers)
Muchas APIs requieren tokens, formatos o claves:
9. Manejo básico de errores
raise_for_status() lanza un error si el código no es 200.
10. Descarga de archivos con requests
Ejemplo descargando una imagen:
11. Autenticación básica (Basic Auth)
12. Otras características útiles
| Función | Descripción |
|---|---|
response.headers |
Cabeceras de la respuesta |
response.cookies |
Cookies enviadas por el servidor |
response.elapsed |
Tiempo de respuesta |
session = requests.Session() |
Mantener sesión persistente |
Actividades prácticas
Ejercicio 1 — Consulta de API pública
Usando la API gratuita:
https://jsonplaceholder.typicode.com/posts- Haz una petición GET.
- Muestra el título del primer post.
- Muestra cuántos posts hay en total.
Ejercicio 2 — Búsqueda con parámetros
Usa la API:
https://jsonplaceholder.typicode.com/comments- Envía una petición GET filtrando por
postId=1. - Muestra solo los emails devueltos.
Ejercicio 3 — Enviar datos por POST
Envía un JSON que contenga:
- nombre
- mensaje
Muestra la respuesta del servidor.
Ejercicio 4 — Manejo de errores
Haz una petición a una URL incorrecta e implementa:
- manejo de timeout
- manejo de errores HTTP
- manejo de excepciones generales
Ejercicio 5 — Descarga de imagen
Desde
https://placehold.co/400
descarga la imagen y guárdala como foto.png.
Criterios de evaluación del tema
El alumnado debe demostrar que:
- Comprende el uso de
requestspara GET y POST. - Es capaz de trabajar con respuestas JSON.
- Sabe enviar parámetros y headers.
- Maneja errores comunes.
- Puede integrar datos de API en un script Python.
Tema 25: Consumo de APIs REST
Objetivo del tema
Aprender a consumir APIs REST utilizando Python y la biblioteca requests, comprendiendo cómo funcionan las rutas, endpoints, parámetros, autenticación y formatos de respuesta. El alumnado será capaz de conectarse a APIs reales como clima, tasas de cambio, información pública, entre otros.
1. ¿Qué es una API REST?
Una API REST es un servicio web que permite a las aplicaciones comunicarse mediante el protocolo HTTP, intercambiando información normalmente en formato JSON.
Características principales:
- Usa métodos HTTP: GET, POST, PUT, DELETE
- Intercambia datos en JSON o XML
- Permite enviar parámetros
- Puede requerir autenticación (tokens)
- Suele tener endpoints bien definidos
Ejemplo de endpoint:
https://api.weatherapi.com/v1/current.json?key=API_KEY&q=Madrid2. API pública vs API privada
| Tipo | Características |
|---|---|
| Pública | No requiere autenticación; acceso libre |
| Con API Key | Requiere clave gratuita o de pago |
| Privada | Requiere autenticación avanzada, tokens o OAuth |
3. Consumir una API REST real — Ejemplo 1: API de clima
Usaremos WeatherAPI (gratuita con registro).
URL de ejemplo
https://api.weatherapi.com/v1/current.json?key=TUKLAVEAQUI&q=Madrid
Código en Python
4. Consumir API REST real — Ejemplo 2: API de tasas de cambio 💱
Usando exchangerate.host (API pública sin clave):
Endpoint:
https://api.exchangerate.host/latest?base=EUR
Código:
5. Ejemplo 3: API pública de datos (COVID, población, etc.)
Usaremos la API open-data del gobierno español:
https://api.publicapis.org/entries
Código:
6. Manejo de errores en APIs REST
Siempre es importante verificar:
Código de estado
Excepciones
7. Autenticación con API Key
Muchas APIs usan un parámetro key=, api_key= o un header:
8. Buenas prácticas al consumir APIs
- Usar timeout para evitar congelar el programa.
- Verificar siempre
status_code. - Manejar excepciones.
- No exponer API Keys en repositorios públicos.
- Guardar claves en variables de entorno:
- Respetar los límites de uso (rate limits).
9. Gestión segura de API keys: variables de entorno y .env
La mejor práctica en Python (y en cualquier proyecto real) para manejar una API key como la de OpenAI es usar variables de entorno más un archivo .env (este último, solo en desarrollo).
Esta combinación te permite:
- No subir la API key al repositorio
- Mantener seguridad incluso si el código se publica
- Facilidad para su uso porque no necesitan configurar manualmente variables en el sistema
- Portabilidad entre máquinas y sistemas operativos
Cómo hacerlo correctamente
1. Crear un archivo .env
Este archivo no se sube al repositorio.
Ejemplo:
OPENAI_API_KEY=tu_api_key_aquiImportante: Este fichero debe añadirse al .gitignore.
2. Instalar python-dotenv
pip install python-dotenv3. Cargar las variables de entorno en Python
¿Por qué NO poner la API key directamente en el código?
Nunca hacer esto:
Razones:
- Se sube al repo y cualquiera la verá.
- Si hacen un push a GitHub público → riesgo real de ser usada por bots.
- OpenAI puede bloquear la cuenta por uso sospechoso.
¿Entonces qué es lo mejor?
Desarrollo local → .env
Muy cómodo de utilizar.
Producción → Variables de entorno del sistema
Ejemplo Linux/macOS:
export OPENAI_API_KEY="xxx" // Linux/MacOs
setx OPENAI_API_KEY "xxx" // Windows PowerShellResolución final
La mejor opción es:
➤ Usar .env + python-dotenv
- Fácil de enseñar
- Seguro
- No se sube al repo
- Igual que en proyectos profesionales
10. Recursos: APIs públicas y ejemplo con OpenAI
Listados de APIs públicas
En internet podemos encontrar infinidad de APIs públicas y privadas, tanto gratuitas como de pago; a menudo basta con buscar en Google la API que necesitamos. Algunos catálogos útiles:
- https://publicapis.dev/
- https://github.com/public-apis/public-apis
- https://datos.gob.es/es/catalogo/conjuntos-datos?res_format_label=JSON
Ejemplo con una API comercial: OpenAI
1. Instalar la librería oficial
pip install openai2. Código de ejemplo
Explicación rápida
OpenAI(api_key="...")→ inicializa el cliente.chat.completions.create→ usa un modelo de chat (recomendado).messages→ conversación en formato sistema → usuario → asistente.response.choices[0].message.content→ texto generado.
Ejemplo real de salida
"Cree en ti, incluso cuando nadie más lo haga."Ejemplo con parámetros adicionales
Ejemplo enviando datos y obteniendo JSON estructurado
Actividades prácticas
Ejercicio 1 — Consulta del clima
- Regístrate en WeatherAPI y consigue una API Key gratuita.
- Crea un programa que:
- Pida al usuario una ciudad
- Muestre temperatura, humedad y condición climática
Ejercicio 2 — Conversor de divisas
Usando exchangerate.host:
- Pide una divisa base (ej.: EUR).
- Pide una divisa destino (ej.: USD).
- Realiza la conversión con el valor retornado por la API.
Ejercicio 3 — Listado de APIs disponibles
Usando:
https://publicapis.dev/- Muestra cuántas APIs existen.
- Permite buscar por categoría (ej.: "Animals").
- Muestra las 10 primeras APIs de esa categoría.
Ejercicio 4 — Manejo de errores
Simula:
- URL incorrecta
- Timeout
- API Key inválida
El programa debe manejar los errores con claridad.
Ejercicio 5 — Proyecto guiado
Crear un script que una datos del clima + monedas, por ejemplo:
Clima actual de Madrid:
Temperatura: 21°C
Moneda local: EUR
Valor EUR → USD: 1.09Combinando dos APIs distintas.
Criterios de evaluación del tema
Realiza peticiones GET con parámetros. Interpreta datos JSON provenientes de APIs reales. Aplica manejo de errores. Sabe consumir APIs públicas y con API key. Es capaz de integrar datos de distintas fuentes en un mismo programa.