Obtenir JSON à partir de l'URL en Python

Chaque fois que nous voulons obtenir des données d’un serveur Web à l’aide d’une URL, ces données doivent avoir un format particulier. En général, chaque fois que nous voulons récupérer des données sur le serveur Web, nous utilisons les formats JSON ou XML.

Nous préférons JSON à XML car il est devenu très populaire dans l’industrie du logiciel. Il existe différentes bibliothèques en Python pour traiter JSON.

Tout au long de ce tutoriel, nous utiliserons les modules json et requests, qui sont disponibles en Python.

Les données JSON que nous allons récupérer proviennent de l’URL ci-dessous. Cette URL nous permet de récupérer toutes les données relatives aux utilisateurs comme le nom, l’email, l’adresse, etc. Son utilisation est gratuite.

https://jsonplaceholder.typicode.com/users

En termes d’API Restful, les URL sont appelées points de terminaison. Tout au long de ce didacticiel, nous utiliserons ces deux mots de manière interchangeable. Dans l’URL ci-dessus, /users fait référence à un point de terminaison.

Si vous ouvrez l’URL ci-dessus dans le navigateur, vous verrez toutes les données relatives aux users au format JSON. Il est montré ci-dessous.

[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
]

Notez que nous ne vous avons montré que les données JSON relatives à un seul utilisateur dans le bloc de code ci-dessus. Ceci est juste à des fins d’explication. Mais si vous visitez l’URL, vous verrez les données de tous les utilisateurs.

Le JSON fait référence à JavaScript Object Notation. Il est utilisé pour envoyer et recevoir des données entre un serveur et un client et vice versa. Ici, ne vous méprenez pas avec le mot JavaScript; JSON est indépendant de tout langage de programmation. En JSON, nous utilisons deux types de parenthèses pour formater les données; l’un est les crochets [] représentant un tableau ou une liste, et l’autre est les accolades {} qui représente un objet.

Les données à l’intérieur du JSON seront toujours sous la forme de paires clé-valeur entre guillemets "". Donc, si vous voulez accéder à une valeur, vous devez utiliser la clé associée à cette valeur. Par exemple, disons que nous voulons accéder au nom de l’utilisateur à partir des données JSON ci-dessus; nous utiliserons la clé name pour obtenir la valeur Leanne Graham, qui est le nom du premier utilisateur. Notez également qu’aucun commentaire n’est autorisé dans JSON.

Obtenir et accéder aux données JSON en Python

Tout d’abord, nous devons importer les modules requests et json pour récupérer et accéder aux données.

import requests, json

Récupérer et convertir les données de l’URL en chaîne

La première étape que nous devons effectuer ici est de récupérer les données JSON à l’aide de la bibliothèque requests.

url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
print(type(text))

Production:

<class 'str'>

La bibliothèque requests a une méthode appelée get() qui prend une URL comme paramètre puis envoie une requête GET à l’URL spécifiée. La réponse que nous obtenons du serveur est stockée dans la variable appelée url.

Cette réponse stockée dans la variable url doit être convertie en chaîne à l’aide de la méthode .text comme url.text. Et puis, nous stockons le résultat dans la variable text. Si vous imprimez le type de la variable text, elle sera de type <class 'str'>.

Analyser les données JSON

L’analyse est un processus de conversion de données de chaîne au format JSON. Pour cela, nous utiliserons le module json.

data = json.loads(text)
print(type(data))

Production:

<class 'list'>

Le module json est livré avec une méthode appelée loads(), le s dans loads() signifie string. Puisque nous voulons convertir des données de chaîne en JSON, nous utiliserons cette méthode. A l’intérieur de cette méthode, il faut passer la variable text qui contient la chaîne data json.loads(text) et la stocker dans la variable data.

Désormais, les data auront l’intégralité de la réponse JSON. Si vous imprimez le type de la variable data, alors elle sera de type <class 'list'> car dans ce cas, la réponse JSON commence par des crochets [] et en Python, les listes commencent par un carré supports.

Accéder aux données JSON

Maintenant que nous avons analysé les données JSON, nous sommes prêts à accéder aux valeurs individuelles que nous voulons en utilisant la variable data. Pour accéder aux détails du premier utilisateur, comme le nom et l’adresse, nous pouvons faire ce qui suit.

import json, requests 

url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text

data = json.loads(text)

user = data[0]
print(user['name'])

address = user['address']
print(address)

Production:

Leanne Graham
{'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}

Pour accéder au premier utilisateur de la liste des utilisateurs, nous devons utiliser l’index 0 des données JSON, qui est stocké dans une variable appelée data, puis stocker tous les détails de ce premier à l’intérieur de user. Or cet users est un objet qui contient tous les détails relatifs à cet utilisateur. Pour accéder au nom, il suffit de passer la clé name dans la variable user comme user['name'] puis de l’imprimer. Il imprimera le nom de l’utilisateur à l’intérieur de la console.

Et pour accéder à l’adresse, il faut passer la clé address à l’intérieur de la variable utilisateur c’est-à-dire user['address'], puis la stocker dans une variable appelée address puis l’imprimer. Cela vous donnera un objet qui contiendra tous les détails spécifiques liés au champ d’adresse comme le numéro d’appartement, le nom de la rue, le code postal, etc. Disons que sur ces détails vous ne voulez que le zipcode de l’utilisateur; il faut ensuite passer la clé de code zipcode à l’intérieur de l’objet address.

Article connexe - Python JSON

  • Sauvegarder le dictionnaire en JSON en Python
  • Écrire JSON dans un fichier en Python
  • Article connexe - Python API

  • Itérer à travers un objet JSON en Python
  • JSON en CSV en Python