Requests è una libreria di python che ci permette di effettuare una richiesta http/https in modo semplice ed immediato basata su urllib3.
Tale modulo è compatibile anche con python 2, tuttavia pure il creatore consiglia di utilizzare python 3. Usiamo pip per installarlo, quindi apriamo il terminale come amministratore e digitiamo pip install requests
.
Effettuare una richiesta
Come già accennato in precedenza, questa libreria, ci permette di creare una richiesta in modo semplice e veloce. Iniziamo subito quindi importando il modulo:
>>> import requests
Ora proviamo ad effettuare una richiesta:
>>> r = requests.get('https://pythonpertutti.it')
La richiesta genera in uscita un oggetto "Risposta", perciò r in questo caso sarà un oggetto che contiente la risposta alla richiesta effettuata precedentemente.
Come ogni oggetto avrà degli attributi tra cui lo status_code che ci permette di visualizzare lo stato della pagina richiesta:
>>> r.status_code
200
Il codice 200 sta ad indicare che la pagina ok.
Visualizzare il testo della riposta
Andiamo ad estrarre il contenuto della pagina:
>>> r.text
<html>...</html>
Visualizzare l'header della risposta
Sempre con questa libreria possiamo andare a vedere l'header della risposta così:
>>> r.headers
{'Date': 'Tue, 22 Jan 2019 14:12:39 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Server': 'nginx/1.10.3', 'X-Frame-Options': 'SAMEORIGIN', 'Transfer-Encoding': 'chunked', 'Set-Cookie': 'csrftoken=jMea0oqDfnccwA2VQFUZ3eODYGfzTMaAixbmr8Lv8b1HI7lBo6DnX3mDxLWC6Oqp; expires=Tue, 21-Jan-2020 14:12:39 GMT; Max-Age=31449600; Path=/', 'Content-Language': 'it', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Vary': 'Cookie, Accept-Language'}
Si può inoltre accedere ad ogni elemento presente nell'header tramite un dizionario:
>>> r.headers['Content-Type']
'text/html; charset=utf-8'
Gestire dati JSON
Requests permette inoltre di gestire dati in formato json in questo modo.
>>> import requests
>>> r.get('https://httpbin.org/get')
>>> r.json
{
"args": {},
"headers": {
"Accept": "application/json",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7",
"Connection": "close",
"Cookie": "_gauges_unique_hour=1; _gauges_unique_day=1; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1",
"Host": "httpbin.org",
"Referer": "https://httpbin.org/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
},
"origin": "TUO_IP",
"url": "https://httpbin.org/get"
}
Eseguire una richiesta POST
Con questa libreria è possibile anche inviare delle richieste POST:
>>> r = requests.post('https://httpbin.org/post')
Si possono anche aggiungere come parametri opzionali i dati che si vogliono passare tramite la richiesta POST:
>>> data = {"nome_dato":"valore_dato",
"nome_dato2":"valore_dato2"}
>>> r = requests.post('https://httpbin.org/post', data=data)
>>> r.text
{
"args": {},
"data": "",
"files": {},
"form": {
"nome_dato1": "valore_dato1",
"nome_dato2": "valore_dato2"
}, ...
...