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': '[email protected]
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\[email protected]\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.