Curso Python. Volumen XVIII: Librería Requests

Escrito por Javier Ceballos Fernández
Programación

Bienvenidos un día más al curso de Python, hoy os vamos presentar la librería “Requests” de Python. Esta librería nos permitirá hacer peticiones HTTP, FTP y un largo etcétera, como con cualquier otro lenguaje de alto nivel. Así que pongámonos manos a la obra para saber cómo descargar, instalar y utilizar esta librería tan útil.

Es verdad que hay una librería nativa de Python llamada “urllib2”, que nos provee de múltiples métodos para obtener todo tipo de información de una URL, además de utilidades para normalizar nuestros datos obtenidos, esta librería es sin duda muy útil, pero para un fin más especifico que sólo consumir URLs al estilo de cURL, pero también es verdad que una librería de terceros como es “Requests” nos va a facilitar mucho la tarea.

Para instalar “Requests” basta con que nos dirijamos a la carpeta donde está instalado Python desde una consola de Windows y ejecutar el siguiente comando:

pip install requests

Para probar la librería en nuestro programa solo hay que importarla en nuestra aplicación:

import requests

Una vez realizado estos dos pasos podemos empezar a utilizarla. “Requests” básicamente es un wrapper de “urllib2” junto con otros módulos de Python, de este modo nos proporciona sencillos métodos con estructura REST, pues contamos con los métodos “post”, “get”, “put”, “patch”, “delete”, “head” y “options”, los cuales son todos los métodos que se utilizan cuando nos comunicamos con un API RESTful.

Python “Requests” cuenta con implementación muy sencilla, ya que por ejemplo una consulta GET sería:

response = requests.get(“http://www.gooogle.com”)

Como podemos comprobar, el método “requests.get” nos devuelve un objeto del tipo “response”. En este objeto se encuentra toda la información correspondiente a la respuesta de nuestra petición. De todos los atributos que posee “response”, vamos a destacar tres de ellos:

  • “response.status_code”: Se trata del código HTTP devuelto por el servidor.
  • “response.content”: Es donde se encuentra el contenido en bruto de la respuesta del servidor.
  • “response.json()”: Se utiliza cuando la respuesta sea un “json”, este método serializa el “string” y nos devolverá un “dict” con la estructura del “json” correspondiente, en caso de no recibir un “json” por respuesta, el método dispara una excepción.

Es importante saber qué tipo de respuesta nos dará la “url” a la que vamos a llamar, de este modo sabremos qué tenemos que hacer, ya sea en caso de éxito o de error. A continuación, os mostraremos un fragmento de código que intenta obtener el resultado de una búsqueda con el API de YouTube, en caso de que la consulta se haga con éxito, vamos a imprimir los títulos de cada resultado, en el caso contrario, un mensaje de error.

url = " https://www.googleapis.com/youtube/v3/search?part=snippet&q=python &alt=json"
response = requests.get(url)
if response.status_code == 200:
    results = response.json()
    for result in results['feed']['entry']:
        print result['title']['$t']
else:
    print "Error code %s" % response.status_code

Si queréis saber más sobre la API de Youtube podéis consultar este link.

Los métodos “post”, “put” y “patch” requieren de un campo extra llamado “data”, en el cual enviamos un diccionario con todos los elementos que le mandaremos al servidor por medio del método correspondiente, a continuación os mostramos un ejemplo:

datos = {
    “nombre”: “Redeszone”,
    “correo”: “redeszone.dev@prueba.com”
}

url = “http://example.com/api/v1/alta_usuario”
response = requests.post(url, data=datos)

Algunos servidores requieren que la petición contenga cabeceras  que indiquen nos estamos comunicando por “json”, para esos casos podemos modificar las cabeceras con el parámetro “headers”:

datos = {
    “nombre”: “Redeszone”,
    “correo”: “redeszone.dev@prueba.com”
}

cabeceras = {
    "Content-Type" : "application/json",
    "Accept":"application/json"
}

url = “http://example.com/api/v1/alta_usuario”
response = requests.post(url, data=datos, headers=cabeceras)

Por último os vamos a mostrar cómo podemos enviar cookies de una forma similar:

datos = {

    “nombre”: “Redeszone”,
    “correo”: “redeszone.dev@prueba.com”
}

cabeceras = {

    "Content-Type" : "application/json",
    "Accept":"application/json"

}

cookies = {

    “cookies_1”: “una cookie enviada”

}

url = “http://example.com/api/v1/alta_usuario”
response = requests.post(url, data=datos, headers=cabeceras, cookies=cookies)

Como habéis podido comprobar, “Requests” es una herramienta muy útil si lo que buscamos es consumir “enp-points” de API’s desde nuestra aplicación Python. Os recomendamos que os leáis la documentación de “Request” ya que desde Redeszone os hemos querido explicar esta librería Python y os hemos mostrado un ejemplo sencillo de cómo se puede utilizar.

Esto es todo por hoy, esperamos que os haya resultado tan sencillo como a nosotros, en los próximos capítulos os iremos introduciendo en más librerías de Python para que vayáis conociendo alguna más. Os recordamos a todos que nunca es tarde para iniciar el curso de Python y que contamos con un índice en el que pueden encontrar todo lo que hemos ido tratando en el curso.


Últimos análisis

Valoración RZ
9
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10
Valoración RZ
8
Valoración RZ
10