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 key
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
import 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
import 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
.
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn