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
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
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
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
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
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
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
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