Comment faire une requête HTTP GET en Python?

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

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

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.