Traitement de la réponse pour les requêtes HTTP
Dans ce chapitre, nous entrerons plus en détail sur la réponse reçue du module requêtes. Nous discuterons des détails suivants -
- Obtenir une réponse
- Réponse JSON
- Réponse RAW
- Réponse binaire
Obtenir une réponse
Nous ferons une requête à l'URL en utilisant la méthode request.get ().
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users');
Le getdata a l'objet de réponse. Il contient tous les détails de la réponse. Nous pouvons obtenir une réponse de 2 manières en utilisant ( text ) et (. Content ). L'utilisation de response.text vous rendra les données au format texte comme indiqué ci-dessous -
Exemple
E:\prequests>python makeRequest.py
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "[email protected]",
"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"
}
},
]
Vous verrez que la réponse est la même, comme elle serait apparue dans le navigateur lorsque vous affichez la source de l'URL comme indiqué ci-dessous
Vous pouvez également essayer l'URL .html et voir le contenu en utilisant response.text, ce sera le même que le contenu source de l'URL .html dans le navigateur.
Maintenant, essayons response.content pour la même URL et voyons la sortie.
Exemple
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
Production
E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild
egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n
"username": "Antonette",\n "email": "[email protected]",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist",
\n "catchPhrase": "Proactive didactic contingency",\n "bs":
"synergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name":
"Clementine Bauch",\n "username": "Samantha",\n "email":
"[email protected]",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "ge
o": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
La réponse est donnée en octets. Vous recevrez une lettrebau début de la réponse. Avec le module de requêtes, vous pouvez obtenir le codage utilisé et également modifier le codage si nécessaire. Par exemple, pour obtenir le codage, vous pouvez utiliser response.encoding.
print(getdata.encoding)
Production
utf-8
Vous pouvez modifier le codage comme suit - Vous pouvez utiliser le codage de votre choix.
getdata.encoding = 'ISO-8859-1'
Réponse JSON
Vous pouvez également obtenir la réponse pour la requête Http au format json en utilisant la méthode response.json () comme suit -
Exemple
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.json())
Production
E:\prequests>python makeRequest.py
[{'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'}}]
Réponse RAW
Si vous avez besoin de la réponse brute pour l'URL Http, vous pouvez utiliser response.raw, ajoutez également stream = True à l'intérieur de la méthode get comme indiqué ci-dessous -
Exemple
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', stream=True)
print(getdata.raw)
Production
E:\prequests>python makeRequest.py
<urllib3.response.HTTPResponse object at 0x000000A8833D7B70>
Pour lire plus de contenu à partir des données brutes, vous pouvez le faire comme suit -
print(getdata.raw.read(50))
Production
E:\prequests>python makeRequest.py
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x95\x98[o\xe38\x12\x85\xdf\xe7W\x10y\
xda\x01F\x82.\xd4m\x9f\xdc\x9dd\xba\xb7\x93\xf4\x06q\xef4\x06\x83A@K\x15\x89m'
Réponse binaire
Pour obtenir une réponse binaire, nous pouvons utiliser response.content.
Exemple
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
Production
E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website":
"hildegard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "us
ername": "Antonette",\n "email": "[email protected]",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist",
\n "catchPhrase": "Proactive didactic contingency",\n "bs": "syn
ergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name":
"Clementine Bauch",\n "username": "Samantha",\n "email": "[email protected]",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "
geo": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
La réponse est donnée en octets. Vous recevrez une lettrebau début de la réponse. La réponse binaire est principalement utilisée pour les demandes non textuelles.