Module requests de Python

Python requests est une bibliothèque de requêtes HTTP couramment utilisée qui peut facilement envoyer des requêtes HTTP à des sites web et obtenir des résultats de réponse.

Le module requests esturllibplus concis que le module.

Pour envoyer des requêtes HTTP à l'aide de requests, vous devez d'abord importer le module requests :

import requests

Après l'importation, vous pouvez envoyer des requêtes HTTP. Utilisez les méthodes fournies par requests pour envoyer une requête HTTP à l'URL spécifiée, par exemple :

Exemple

# Importer le package requests
import requests

# Envoyer la requête
x = requests.get('https://www.example.com/')

# Renvoyer le contenu de la page web
print(x.text)

Après chaque appel à requests, un objet response est renvoyé. Cet objet contient des informations de réponse spécifiques, telles que le code d'état, les en-têtes de réponse, le contenu de la réponse, etc. :

print(response.status_code)  # 获取响应状态码
print(response.headers)  # 获取响应头
print(response.content)  # 获取响应内容

Les informations de réponse supplémentaires sont les suivantes :

Attribut ou méthode Description
apparent_encoding Encodage
close() Ferme la connexion au serveur
content Renvoie le contenu de la réponse en octets
cookies Renvoie un objet CookieJar contenant les cookies envoyés par le serveur
elapsed Renvoie un objet timedelta contenant le temps écoulé entre l'envoi de la requête et la réception de la réponse, ce qui peut être utilisé pour tester la vitesse de réponse. Par exemple, r.elapsed.microseconds indique combien de microsecondes il faut pour que la réponse arrive.
encoding L'encodage utilisé pour décoder r.text
headers Retourne les en-têtes de réponse au format dictionnaire
history Retourne une liste d'objets de réponse contenant l'historique des requêtes (url)
is_permanent_redirect Retourne True si la réponse est une URL redirigée de façon permanente, sinon retourne False
is_redirect Retourne True si la réponse a été redirigée, sinon retourne False
iter_content() Itère sur la réponse
iter_lines() Itère sur les lignes de la réponse
json() Retourne un objet JSON du résultat (le résultat doit être écrit au format JSON, sinon une erreur sera levée)
links Renvoie les liens d'en-tête analysés de la réponse
next Renvoie l'objet PreparedRequest pour la prochaine requête dans la chaîne de redirection
ok Vérifie la valeur de "status_code", renvoie True si elle est inférieure à 400, renvoie False si elle n'est pas inférieure à 400
raise_for_status() Si une erreur se produit, la méthode renvoie un objet HTTPError
reason Description du statut de la réponse, tel que "Not Found" ou "OK"
request Renvoie l'objet requête qui a demandé cette réponse
status_code Renvoie le code d'état HTTP, tel que 404 et 200 (200 est OK, 404 est Not Found)
text Renvoie le contenu de la réponse sous forme de données de type Unicode
url Renvoie l'URL de la réponse

Exemple

# Importer le package requests
import requests

# Envoyer la requête
x = requests.get('https://www.example.com/')

# Retourne le code d'état HTTP
print(x.status_code)

# Description du statut de la réponse
print(x.reason)

# Renvoyer l'encodage
print(x.apparent_encoding)

Le résultat de sortie est le suivant :

200
OK
utf-8

Demander un fichier de données JSON et renvoyer le contenu JSON :

Exemple

# Importer le package requests
import requests

# Envoyer la requête
x = requests.get('https://www.example.com/try/ajax/json_demo.json')

# Renvoyer les données JSON
print(x.json())

Le résultat de sortie est le suivant :

{'name': '网站', 'num': 3, 'sites': [{'name': 'Google', 'info': ['Android', 'Google 搜索', 'Google 翻译']}, {'name': 'Example', 'info': ['Example', 'Example工具', 'Example微信']}, {'name': 'Taobao', 'info': ['淘宝', '网购']}]}

Méthodes de requests

Les méthodes de requests sont les suivantes :

Méthode Description
delete(url, args) Envoie une requête DELETE à l'URL spécifiée
get(url, params, args) Envoie une requête GET à l'URL spécifiée
head(url, args) Envoie une requête HEAD à l'URL spécifiée
patch(url, data, args) Envoie une requête PATCH à l'URL spécifiée
post(url, data, json, args) Envoie une requête POST à l'URL spécifiée
put(url, data, args) Envoie une requête PUT à l'URL spécifiée
request(method, url, args) Envoie la méthode de requête spécifiée à l'URL spécifiée

Envoyez une requête GET en utilisant requests.request() :

Exemple

# Importer le package requests
import requests

# Envoyer la requête
x = requests.request('get', 'https://www.example.com/')

# Renvoyer le contenu de la page web
print(x.status_code)

Le résultat de sortie est le suivant :

200

Définir les en-têtes de requête :

Exemple

# Importer le package requests
import requests

 
kw = {'s':'tutoriel python'}

# Définir les en-têtes de requête
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 
# params accepte les paramètres de requête sous forme de dictionnaire ou de chaîne. Les types dictionnaire sont automatiquement convertis en encodage URL, pas besoin de urlencode()
response = requests.get("https://www.example.com/", params = kw, headers = headers)

# Afficher le code d'état de la réponse
print (response.status_code)

# Afficher l'encodage des caractères de l'en-tête de réponse
print (response.encoding)

# Afficher l'adresse URL complète
print (response.url)

# Afficher le contenu de la réponse, response.text renvoie les données au format Unicode
print(response.text)

Le résultat de sortie est le suivant :

200
UTF-8
https://www.example.com/?s=python+%E6%95%99%E7%A8%8B

... 其他内容...

La méthode post() peut envoyer une requête POST à l'URL spécifiée. Le format général est le suivant :

requests.post(url, data={key: value}, json={key: value}, args)
  • urlL'URL à appeler.

  • dataLe paramètre data est un dictionnaire, une liste de tuples, des bytes ou un objet fichier à envoyer à l'URL spécifiée.

  • jsonLe paramètre json est un objet JSON à envoyer à l'URL spécifiée.

  • argsAutres paramètres, tels que cookies, headers, verify, etc.

Exemple

# Importer le package requests
import requests

# Envoyer la requête
x = requests.post('https://www.example.com/try/ajax/demo_post.php')

# Renvoyer le contenu de la page web
print(x.text)

Le résultat de sortie est le suivant :

<p style='color:red;'>本内容是使用 POST 方法请求的。</p><p style='color:red;'>请求时间:
2022-05-26 17:30:47</p>

Requête POST avec paramètres :

Exemple

# Importer le package requests
import requests

# Paramètres de formulaire, les noms des paramètres sont fname et lname
myobj = {'fname': 'EXAMPLE','lname': 'Boy'}

# Envoyer la requête
x = requests.post('https://www.example.com/try/ajax/demo_post2.php', data = myobj)

# Renvoyer le contenu de la page web
print(x.text)

Le résultat de sortie est le suivant :

<p style='color:red;'>你好,EXAMPLE Boy,今天过得怎么样?</p>

Paramètres de requête supplémentaires

Lors de l'envoi d'une requête, nous pouvons joindre des paramètres supplémentaires à la requête, tels que des en-têtes de requête, des paramètres de requête, un corps de requête, etc., par exemple :

headers = {'User-Agent': 'Mozilla/5.0'}  # 设置请求头
params = {'key1': 'value1', 'key2': 'value2'}  # 设置查询参数
data = {'username': 'example', 'password': '123456'}  # 设置请求体
response = requests.post('https://www.example.com', headers=headers, params=params, data=data)

Le code ci-dessus envoie une requête POST avec des en-têtes de requête supplémentaires, des paramètres de requête supplémentaires et un corps de requête supplémentaire.

En plus des requêtes GET et POST de base, requests prend également en charge d'autres méthodes HTTP, telles que PUT, DELETE, HEAD, OPTIONS, etc.

Autres extensions