Comment faire une requête HTTP GET en Python si je sais que le contenu sera une chaîne de caractères ? Je cherche dans la documentation une méthode rapide du type comme :
str = url.get("http://exemple.com/hello/world")
Mais tout ce que je trouve sur Google, c’est httplib et urllib - et je ne parviens pas à trouver un raccourci dans ces bibliothèques.
Voici Comment faire une requête HTTP GET en :
Python 3:
import urllib.request
contents = urllib.request.urlopen("http://exemple.com/hello/world").read()
Python 2:
import urllib2
contents = urllib2.urlopen("http://exemple.com/hello/world").read()
Isaac
Juin 25, 2023, 10:12
3
Utiliser la bibliothèque requests :
import requests
r = requests.get("http://exemple.com/hello/world")
Vous pouvez alors faire des trucs comme ceci :
>>> print(r.status_code)
>>> print(r.headers)
>>> print(r.content) # bytes
>>> print(r.text) # r.content en tant que string
Installez la bibliothèque requests en exécutant cette commande :
pip install requests
Si vous voulez que la solution avec httplib2 soit plus simple, instanciez un objet Http anonyme
import httplib2
resp, text = httplib2.Http().request("http://exemple.com/hello/world")
Henri
Juin 25, 2023, 10:38
5
C’est assez simple avec la bibliothèque urllib3
.
Importez-le de cette façon :
import urllib3
http = urllib3.PoolManager()
Et faites une requête comme celle-ci :
response = http.request('GET', 'https://exemple.com')
print(response.data) # Données brutes.
print(response.data.decode('utf-8')) # Texte.
print(response.status) # Code d'état.
print(response.headers['Content-Type']) # Type de contenu.
Vous pouvez aussi ajouter des en-têtes :
response = http.request('GET', 'https://exemple.com', headers={
'key1': 'value1',
'key2': 'value2'
})
urllib3
est beaucoup plus sécurisé et facile à utiliser que les modules intégrés urllib.request
ou http
et est stable.