API - Extraction des utilisateurs
Version simple⚓
1
import requests
2
url = 'https://prod.mydimomaintmx.cloud/IUT_EHC/connector/User/Filter'
3
4
headers = {
5
'accept': 'application/json',
6
'X-API-Key': 'ma6yphqcvou_glk8vlkoih-0-embqy0i.j_b_0twomnlg2!nlzbhk5-2x!mhv-krn0qheqer8w1snkxa',
7
'Content-Type': 'application/json'
8
}
9
data = {
10
"archived": False,
11
"bodyNames": [
12
"IUT EPINAL"
13
]
14
}
15
16
response = requests.post(url, headers=headers, json=data)
17
18
if response.status_code == 200:
19
users = response.json() # Réponse de l'API en JSON
20
for user in users:
21
print(user) # On remarquera que les données brutes au format JSON sont difficilement lisibles
22
else:
23
print("Une erreur s'est produite lors de la requête.")
Ecrire les données dans un fichier texte⚓
1
import json # à ajouter en début de module
2
with open('users_data.txt', 'w') as file:
3
json.dump(users, file, indent=4)
4
print("Données JSON écrites dans le fichier 'users_data.txt'.")
Remarque :
Ouvrir le fichier avec un éditeur de texte pour disposer d'un formatage plus lisible que le print en python
Transférer les données JSON vers un dataframe PANDAS⚓
1
# Insérer en début de module
2
import pandas as pd
3
# Ligne existante
4
users_json = response.json()
5
# Appel PANDAS
6
df =pd.DataFrame(users_json)
7
print(df)
8
# Restriction aux colonnes souhaitées
9
users_df = df[['userName', 'firstName', 'lastName']]
10
print(users_df)
11
# Filtre des lignes où l'identifiant commence par '21'
12
filtered_df = users_df[users_df['userName'].astype(str).str.startswith('21')]
13
print(filtered_df)
Remarque : Transformation des données JSON⚓
Pandas permet de travailler de manière très simple avec une structure ligne-colonne proche de celle que l'on a l'habitude de manipuler avec le tableur.
Ecrire les données dans un fichier Excel⚓
1
'''
2
Si openpyxl n'est pas déjà installé, vous pouvez l'installer via pip : pip3 install openpyxl
3
'''
4
# Écrire le DataFrame dans un fichier Excel
5
filtered_df.to_excel('Export_USERS.xlsx', sheet_name='users21', index=False, engine='openpyxl')
6
Remarque :
La simplicité de Pandas est illustrée avec la génération du fichier EXCEL