python-requestsPremiers pas avec les requêtes python


Remarques

HTTP pour les humains

Requests est la seule bibliothèque HTTP non-GMO pour Python, sans danger pour la consommation humaine.

Requests vous permet d'envoyer des requêtes HTTP/1.1 organiques, sans besoin de travail manuel. Il n'est pas nécessaire d'ajouter manuellement des chaînes de requête à vos URL, ni d'encoder vos données POST. Le pool de connexions Keep-Alive et HTTP est 100% automatique, alimenté par urllib3 , qui est intégré à Requests.

Le pouvoir des requêtes:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

Lire la réponse

response = requests.get("https://api.github.com/events")
text_resp = response.text
 

Réponse JSON : pour les réponses au format json, le package fournit un décodeur intégré

response = requests.get('https://api.github.com/events')
json_resp = response.json()
 

Cette méthode ValueError une ValueError en cas de réponse vide ou de contenu non analysable.

Demandes GET

requests.get() crée une requête GET:

response = requests.get('https://example.com/')
 

Transmettez les paramètres de requête sous forme de dictionnaire à l'argument params :

response = requests.get('https://example.com/', params={"a": 1, "b": 2})
 

Pour les requêtes GET pouvant nécessiter une authentification de base, vous pouvez inclure le paramètre auth comme suit:

response = requests.get('https://api.github.com/user', auth=('user', 'pass'))
 

Installation ou configuration

python-requests est disponible sur PyPI, l'index de package Python, ce qui signifie qu'il peut être installé via pip:

pip install requests
 

Le code source mis à jour peut être trouvé sur le dépôt de requêtes GitHub

Si vous souhaitez l'installer depuis la source, vous pouvez le faire soit en clonant le dépôt GitHub:

git clone git://github.com/kennethreitz/requests.git
 

Ou en obtenant l'archive ( -O écrit la sortie dans le fichier; -L suit les redirections):

curl -OL https://github.com/kennethreitz/requests/tarball/master
 

Ensuite, vous pouvez l'installer en exécutant le setup.py

python setup.py install
 

Quel que soit l’installation, vous pouvez commencer à l’utiliser en important la manière habituelle

>>> import requests
>>> requests.get('http://stackoverflow.com')
 

Autres méthodes de demande

Le module requests dispose de fonctions de premier niveau pour la plupart des méthodes HTTP:

r = requests.put('https://example.com/', data=put_body)
r = requests.delete('https://example.com/')
r = requests.head('https://example.com/')
r = requests.options('https://example.com/')
r = requests.patch('https://example.com/', data=patch_update)
 

Demandes POST

Les requêtes POST sont effectuées avec la méthode request.post() .

Si vous devez envoyer une demande de formulaire Web en tant que corps POST, transmettez un dictionnaire contenant des paires clé-valeur en tant qu'argument de data ; requests les encoderont dans un corps application/x-www-form-urlencoded type application/x-www-form-urlencoded :

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

Si vous devez POSTER une charge utile json, vous pouvez utiliser json= . Cela définira automatiquement l'en-tête Content-Type sur application/json

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

Lecture des codes d'état

L'attribut status_code contient le code d'état de la réponse

good_req = requests.get('https://api.github.com/events')
code_200 = good_req.status_code

notfound_req = requests.get('https://api.github.com/not_found')
code_404 = notfound_req.status_code
 

requests.codes.__dict__ fournira une liste des codes de statut http disponibles.

Il est possible d’utiliser raise_for_status pour vérifier si le status_code était 4xx ou 5xx et déclencher une exception correspondante dans ce cas.

good_req = requests.get('https://api.github.com/events')
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = requests.get('https://api.github.com/not_found')
notfound_req.raise_for_status()
# raises requests.exceptions.HTTPError: 404 Client Error