Petición GET con Requests en Python

Resumen

Aprender a conectarte a un sitio web desde Python es el primer paso real para hacer web scraping. Con la librería Requests puedes replicar lo que hace tu navegador cuando entras a books.toscrape.com y traer el HTML completo a tu notebook para luego procesarlo.

La idea es simple: tu código se comporta como un visitante invisible que toca la puerta del servidor, pide la página y recibe una respuesta. A partir de ahí empieza todo lo demás.

¿Qué dependencias necesitas para empezar a hacer scraping?

Antes de escribir la primera línea, prepara tu entorno con tres librerías que vas a usar a lo largo del proyecto.

  • Requests: para hacer las peticiones HTTP al servidor.
  • Beautiful Soup: para parsear y limpiar el HTML que recibas.
  • CSV: para guardar los datos extraídos en un archivo estructurado.

Estas tres trabajan juntas: una pide, otra interpreta y la última almacena. Así de claro [00:18].

¿Qué métodos HTTP existen y cuál debes usar?

Cuando hablamos de HTTP, existen cuatro métodos básicos y cada uno cumple un rol distinto en la comunicación con un servidor [00:30].

  • GET: pide un recurso, igual que cuando escribes una URL en el navegador.
  • POST: envía parámetros al servidor para crear o procesar algo.
  • PUT: actualiza un recurso existente.
  • DELETE: elimina un recurso existente.

Para replicar lo que hace tu navegador al abrir una página, el método correcto es GET. No envías parámetros, solo pides ver el contenido.

¿Qué hace el método GET en HTTP? Solicita un recurso al servidor sin enviar parámetros adicionales. Es el mismo comportamiento que tienes cuando escribes una URL en tu navegador y presionas Enter.

¿Cómo hacer una petición GET con Requests en Python?

La implementación es directa. Defines la URL del sitio y usas el método get de la librería para guardar la respuesta en una variable [01:05].

python import requests

url = "https://books.toscrape.com" response = requests.get(url) print(response)

Al ejecutar, vas a ver algo como <Response [200]>. Ese número es el status code y es la primera pista de si todo salió bien.

¿Qué significa el status code 200 y por qué importa?

El status code 200 indica que la petición se realizó de manera exitosa y que el servidor te devolvió el recurso solicitado. Es el código que quieres ver siempre que estés haciendo scraping.

Pero el objeto response tiene más que un número. También guarda el HTML completo de la página, al que accedes con response.text [01:48].

python print(response.text)

Eso te devuelve todo el HTML del sitio, exactamente lo mismo que verías en tu navegador si presionas Ctrl + U o si entras a las herramientas de desarrollo desde el menú de tres puntos, sección elementos.

¿Cómo validar la respuesta del servidor antes de procesar el HTML?

Mostrar todo el HTML sin verificar primero si la petición fue exitosa es un mal hábito. La buena práctica es comparar el status code antes de seguir [02:46].

python if response.status_code == 200: print("Status code 200, exitoso") print(response.text[0:15]) else: print(response.status_code)

Aquí pasan dos cosas interesantes. Primero, accedes al número puro con response.status_code, distinto a imprimir solo response que devuelve el objeto completo. Segundo, usas slicing de listas ([0:15]) para mostrar solo los primeros 15 caracteres del HTML y no saturar la salida.

¿Cuál es la diferencia entre response y response.status_code? response es el objeto completo que devuelve el servidor. response.status_code te entrega solo el número entero del estado, útil para hacer comparaciones directas con if.

¿Qué pasa cuando la URL no existe?

Forzar un error es una forma rápida de entender cómo reacciona tu código. Si modificas la URL agregando una ruta inexistente como libro-ficcion, el servidor responde con un 404 Not Found [03:50].

python url = "https://books.toscrape.com/libro-ficcion" response = requests.get(url) print(response) # <Response [404]> print(response.text) # 404 Not Found, nginx

El mismo error que verías en el navegador, pero ahora capturado en tu código. Eso te permite manejar fallos sin que tu script se rompa.

¿Qué significa el error 404 en una petición HTTP? Significa que el recurso solicitado no existe en el servidor. La URL es válida en sintaxis, pero la página o el archivo al que apunta no se encuentra disponible.

¿Y ahora qué hago con tanto HTML?

Obtener el HTML completo se siente abrumador al principio. Es un bloque enorme de etiquetas, atributos y texto mezclado que parece imposible de aprovechar.

Pero ahí entra la siguiente etapa: limpiar ese contenido y extraer solo lo que te interesa, como títulos, precios y URLs de los libros. Para eso vas a usar Beautiful Soup en la próxima clase.

¿Ya probaste hacer tu primera petición GET? Cuéntame en los comentarios qué status code recibiste y a qué sitio le hiciste scraping.