Le module requests
est un module Python faisant office de client HTTP. Il remplacera avantageusement le module standard urllib
.
L'utilisation d'un proxy est nécessaire depuis un site de l'Université. Partout, dans la suite, on supposera que les réglages suivants ont été faits :
proxies = {'http': 'http://cache.univ-poitiers.fr:3128', 'https': 'http://cache.univ-poitiers.fr:3128' }
Pour certaines fonctions, on passera le dictionnaire en paramètres (le paramètre s'appelle proxy). Si on n'utilise pas de proxy, on peut ne pas passer ce paramètres, ou passer un dictionnaire vide :
proxies = {}
import requests url = "http://api.openweathermap.org/data/2.5/weather?q=Poitiers,fr" r = requests.get(url, proxies=proxies) print(r.json())
La réponse r
contient les propriétés:
ok
, un booléen qui indique si le code de retour est bien 200text
: une chaîne contenant la page encodée en utf8 (le transcodage est effectué en se basant sur les infos fournies dans l'entête)headers
: contient les en-têtes HTTPcookies
: contient les cookiescontent
: contenu (octets) de la réponse
La méthode r.json()
permet d'interpréter le contenu de la page et de renvoyer un dictionnaire si la page était au format json.
Plutôt qu'encoder soi même les paramètres dans l'URL, on peut passer un dictionniare :
url = "http://api.openweathermap.org/data/2.5/weather" r = requests.get(url, params = {'q': 'Poitiers,fr'}, proxies=proxies)
On peut passer des cookies dans une requêtes en envoyant le paramètre cookies
(un dictionnaire) :
r = requetes.get(url, cookies = {'idsession' : 'I98E234', 'name': 'Toto'})
De même on peut récupérer le contenu des cookies renvoyés ainsi :
r = requetes.get(url) print(r.cookies)
Dans le cas où on doit renvoyer les cookies stockés (suivi de session), il existe un moyen plus simple de procéder :
sess = requests.Session() s.get(....) s.get(....) # le second s.get resservira les cookies stockés lors du premier s.get
On peut passer en paramètre à une requêtes get
le paramètre auth
, qui précise la méthode d'authentification à employer.
Ce paramètre peut être un objet de type HTTPBasicAuth
, HTTPDigestAuth
(sous module requetes.auth
ou bien OAuth1
(module tiers requests_oauthlib
).
Exemple :
import requests imoprt requests.auth url=... auth = request.auth.HTTPBasicAuth('nomdutilisateur','modepasse') r = requests.get(url, auth=auth)
On pourra trouver un exemple d'utilisation de requests_oauthlib
ici :
API Twitter en Python 3
On peut naturellement réaliser des requêtes post plutôt que get. On ajoutera alors le dictionnaire data
en paramètres :
r = requests.post(url, data={'loginform': 'archibald', 'password': 'hdck'}
Un fichier complet peut être envoyé par le biais du paramètre files
:
# f est un descripteur de fichiers r = requests.post(url, file = {'file': f})
</code>
Transmission d'entêtes avec la requête :
r = requests.get(url, headers={'content-type': 'text/html'})
Le paramètre allow_redirects
active ou non les redirections (codes de retour ''3XX'')