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 requests

Y 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=payload para 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
  1. Haz una petición GET.
  2. Muestra el título del primer post.
  3. Muestra cuántos posts hay en total.

Ejercicio 2 — Búsqueda con parámetros

Usa la API:

https://jsonplaceholder.typicode.com/comments
  1. Envía una petición GET filtrando por postId=1.
  2. Muestra solo los emails devueltos.

Ejercicio 3 — Enviar datos por POST

Envía un JSON que contenga:

  • nombre
  • email
  • 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 requests para 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=Madrid

2. 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_aqui

Importante: Este fichero debe añadirse al .gitignore.

2. Instalar python-dotenv
pip install python-dotenv
3. 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 PowerShell

Resolució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:

Ejemplo con una API comercial: OpenAI

1. Instalar la librería oficial
pip install openai
2. 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

  1. Regístrate en WeatherAPI y consigue una API Key gratuita.
  2. 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:

  1. Pide una divisa base (ej.: EUR).
  2. Pide una divisa destino (ej.: USD).
  3. Realiza la conversión con el valor retornado por la API.

Ejercicio 3 — Listado de APIs disponibles

Usando:

https://publicapis.dev/
  1. Muestra cuántas APIs existen.
  2. Permite buscar por categoría (ej.: "Animals").
  3. 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.09

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