Python requests: enviar solicitudes HTTP con Python
Python requests
es una biblioteca popular que permite enviar solicitudes HTTP y comprobar las respuestas. Aunque .get()
es el método más utilizado del módulo, existen muchas otras opciones disponibles.
¿Qué es Python requests
?
Python requests
es una herramienta estándar que te permite enviar solicitudes HTTP a través del lenguaje de programación Python. Se basa en una interfaz de programación clara y eficaz que facilita mucho la integración de funciones de terceros. La biblioteca requests
de Python ofrece varias herramientas con las que puedes enviar solicitudes HTTP y recibir las respuestas correspondientes. Aunque el módulo Python requests
es ampliamente utilizado y muy recomendable, no forma parte de la instalación estándar de Python.
Instalación y uso de la biblioteca Python requests
Antes de instalar la biblioteca Python requests
, se recomienda configurar primero una máquina virtual donde puedas probarla sin preocupaciones. Después, utiliza pip
para la instalación con el siguiente comando:
$ python -m pip install requests
bashUna vez instalada, puedes importar la biblioteca en tu código con el siguiente comando:
import requests
pythonFuncionamiento, sintaxis y métodos
Al igual que otras herramientas similares, Python requests
también envía una solicitud HTTP y, si la transmisión tiene éxito, recibe una respuesta. La respuesta es un objeto que contiene toda la información importante, como el contenido, la codificación y el estado. La sintaxis de una solicitud de este tipo es la siguiente:
requests.method(url, **kwargs)
python**kwargs
representa argumentos opcionales que puedes pasar a las funciones, como headers
, files
o cookies
.
Aunque .get()
es la función que usarás más a menudo, Python requests te ofrece otros métodos. Las funciones disponibles son:
.delete(url, **kwargs)
: utiliza.delete()
para eliminar un recurso específico.get(url, parameter=None, **kwargs)
: utiliza.get()
para solicitar información a un servidor.head(url, **kwargs)
: con.head()
también solicitas una respuesta de un servidor, pero te limitas al encabezado.patch(url, data=None, **kwargs)
: con.patch()
puedes mejorar el rendimiento, ya que solo envía cambios al recurso.post(url, data=None, json=None, **kwargs)
: con.post()
envías datos al servidor, como formularios o información en formato JSON.put(url, data=None, **kwargs)
: con.put()
modificas un recurso existente y generas nuevos datos en el servidor..request(method, url, **kwargs)
: con.request()
envías una solicitud utilizando un método específico a la URL
Ejemplo del método .get()
La estructura de .get()
es muy sencilla, lo que hace que Python requests
sea una biblioteca práctica. Solo necesitas el método y la URL a la que quieres acceder, la cual se escribe entre comillas. Aquí tienes un ejemplo:
import requests
requests.get("https://ejemplo.com")
pythonRecibirás la respuesta del servidor objetivo automáticamente. Puedes almacenar la respuesta en una variable para examinarla posteriormente:
import requests
response = requests.get("https://ejemplo.com")
pythonConsultar códigos de estado
La respuesta más básica que puedes recibir de una solicitud es un código de estado HTTP, que te indica si la solicitud fue exitosa o no. El código de estado es de tres dígitos, y existen varias categorías que te informan sobre el resultado de tu solicitud. Aquí tienes las categorías más importantes:
- 1XX: contiene información adicional
- 2XX: indica que la solicitud fue exitosa
- 3XX: informa de una redirección de tu solicitud
- 4XX: informa de un error del lado del cliente
- 5XX: informa de un error del lado del servidor
Entre los códigos de estado más comunes se encuentran “200 – OK” (para una solicitud exitosa) y “404 – Not Found” (si los datos solicitados no se encuentran en el servidor).
Después de hacer una solicitud con Python requests
, puedes consultar el estado usando .status_code
. Para ello, utiliza el siguiente código:
response.status_code
pythonSi la solicitud tuvo éxito, recibirás el siguiente resultado:
200
pythonPuedes usar el siguiente código para visualizarlo mejor:
if response.status_code == 200:
print("La solicitud tuvo éxito.")
elif response.status_code == 404:
print("La solicitud no tuvo éxito.")
pythonVer los encabezados con Python requests
El encabezado de una respuesta HTTP contiene mucha información útil. Entre otros datos, encontrarás el tipo de contenido enviado, el límite de tiempo para el almacenamiento en caché y otros detalles. Con la biblioteca Python requests
, puedes ver fácilmente el encabezado. Primero, ejecuta la función .get()
y luego accede a .headers
:
import requests
response = requests.get("https://ejemplo.com")
response.headers
pythonLa salida te mostrará un objeto que contiene los valores del encabezado. También puedes consultar valores individuales especificando el comando correspondiente. Por ejemplo, si quieres saber más sobre el tipo de contenido, debes ejecutar el siguiente código:
response.headers["content-type"]
pythonAcceder al payload
El paquete de datos que se envía entre el servidor y el cliente se conoce como “payload” y se encuentra en el cuerpo de la respuesta. Puedes utilizar response
para acceder a la información del payload. Para obtener una representación en bytes, utiliza el siguiente código:
import requests
response = requests.get("https://ejemplo.com")
response.content
type(response.content)
pythonSi prefieres introducir la información obtenida en una cadena, utiliza el siguiente código:
response.text
type(response.text)
pythonPython requests
obtendrá la codificación del encabezado. Como alternativa, también puedes indicar al sistema que utilice un método de codificación diferente. Aquí tienes un código de ejemplo:
response.encoding = "utf-8"
response.text
pythonVerificar el progreso
Cuando envías una solicitud, Python requests
se prepara para evitar errores no deseados. Durante el envío de la solicitud, entre otras cosas, comprueba el encabezado. Puedes consultar el progreso de la solicitud utilizando la función .request
, con el siguiente código:
import requests
response = requests.post("https://ejemplo.com", json={"key": "value"})
print(response.request.headers["content-type"])
print(response.request.url)
print(response.request.body)
pythonEsto te proporciona información sobre el payload, el encabezado, la URL y muchos otros aspectos.
Autenticación con el módulo de Pythonrequests
El parámetro auth
se utiliza en Python requests
para enviar una autenticación al servidor, permitiendo verificar la identidad de quien interactúa con él. usa el siguiente código para aplicar la función de autenticación:
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("https://tupagina.com/basic-auth/user/passwd",
auth=HTTPBasicAuth("user", "passwd"))
print(response.status_code)
print(response.request.headers["Authorization"])
pythonUtilizar un certificado SSL
En general, se recomienda utilizar un certificado SSL para evitar la pérdida de datos y accesos no autorizados. Python requests
ofrece un certificado SSL de forma predeterminada. Sin embargo, si quieres evitar la verificación SSL al hacer una solicitud, puedes hacerlo con el siguiente código:
import requests
requests.get("https://ejemplo.com", verify=False)
pythonDe todas formas, recibirás una advertencia al respecto.
Iniciar un timeout con Python requests
Con Python requests
, también puedes limitar el tiempo máximo de espera para una respuesta. De manera predeterminada, el cliente esperará una respuesta indefinidamente. Si la respuesta no llega, las solicitudes pueden acumularse y afectar al rendimiento, pero puedes evitarlo con el parámetro timeout
. El siguiente código hace que Python requests
cancele la solicitud una vez transcurridos al menos dos segundos:
requests.get("https://ejemplo.com", timeout=2)
pythonDespliega tu página web o aplicación directamente desde GitHub: Deploy Now de IONOS es la mejor opción tanto para aplicaciones de una sola página como para páginas web estáticas. ¡Elige la tarifa que mejor se adapte a tus necesidades y disfruta de una configuración más rápida, flujos de trabajo optimizados y un diseño seguro!