Python
Python
#python-
requests
Sommario
Di 1
Osservazioni 2
Examples 2
Installazione o configurazione 2
Ottieni richieste 3
Richieste POST 3
Leggendo la risposta 4
Examples 5
Examples 7
Installazione e configurazione 7
Capitolo 4: File 10
Parametri 10
Osservazioni 10
Examples 10
Examples 11
POSTing JSON 11
Examples 14
Titoli di coda 15
Di
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: python-requests
It is an unofficial and free python-requests ebook created for educational purposes. All the content
is extracted from Stack Overflow Documentation, which is written by many hardworking individuals
at Stack Overflow. It is neither affiliated with Stack Overflow nor official python-requests.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/it/home 1
Capitolo 1: Iniziare con le richieste Python
Osservazioni
Le richieste consentono di inviare richieste HTTP/1.1 organiche e alimentate con erba, senza la
necessità di manodopera manuale. Non è necessario aggiungere manualmente stringhe di query
ai tuoi URL o codificare in forma i tuoi dati POST. Il pool di connessioni keep-alive e HTTP sono al
100% automatiche, alimentate da urllib3 , che è incorporato in Requests.
Examples
Installazione o configurazione
python-requests è disponibile su PyPI, l'indice del pacchetto Python, il che significa che può essere
installato tramite pip:
È possibile trovare il codice sorgente aggiornato sulle richieste del repository GitHub
https://riptutorial.com/it/home 2
Quindi puoi installarlo eseguendo setup.py
Ottieni richieste
response = requests.get('https://example.com/')
Per le richieste GET che potrebbero richiedere l'autenticazione di base, è possibile includere il
parametro auth come segue:
Richieste POST
Se è necessario inviare una richiesta di modulo Web come corpo POST, passare un dizionario
con coppie chiave-valore come argomento data ; requests li codificheranno in un corpo del
mimetype application/x-www-form-urlencoded :
Se è necessario caricare un carico utile JSON, è possibile utilizzare json= . Questo imposterà
automaticamente l'intestazione Content-Type su application/json
Il modulo delle requests ha funzioni di primo livello per la maggior parte dei metodi 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/')
https://riptutorial.com/it/home 3
r = requests.patch('https://example.com/', data=patch_update)
Leggendo la risposta
response = requests.get("https://api.github.com/events")
text_resp = response.text
Risposta JSON : per le risposte in formato json, il pacchetto fornisce un decoder incorporato
response = requests.get('https://api.github.com/events')
json_resp = response.json()
Questo metodo genera un errore ValueError in caso di risposta vuota o contenuto non variabile.
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
È possibile utilizzare raise_for_status per verificare se lo status_code era 4xx o 5xx e generare
un'eccezione corrispondente in quel caso.
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
https://riptutorial.com/it/home 4
Capitolo 2: Automazione dell'accesso tramite
Richieste su Single Sign-On
Examples
Esempio di accesso a pagine autenticate usando le richieste
A volte abbiamo bisogno di analizzare le pagine, ma farlo richiede che tu sia un utente autorizzato.
Ecco un esempio che mostra come eseguire l'accesso Oracle.
import sys
import requests
import json
from bs4 import BeautifulSoup
def mprint(x):
sys.stdout.write(x)
print
return
mprint('[-] Initialization...')
s = requests.session()
s.headers.update(headers)
print 'done'
c = r.content
soup = BeautifulSoup(c,'lxml')
svars = {}
https://riptutorial.com/it/home 5
svars[var['name']] = var['value']
s = requests.session()
r = s.post('https://login.oracle.com/mysso/signon.jsp', data=svars)
data = {
'v': svars['v'],
'OAM_REQ': svars['OAM_REQ'],
'site2pstoretoken': svars['site2pstoretoken'],
'locale': svars['locale'],
'ssousername': login['ssousername'],
'password': login['password'],
}
r = s.post('https://login.oracle.com/oam/server/sso/auth_cred_submit', data=data)
{
"ssousername":"[email protected]",
"password":"put your password here"
}
https://riptutorial.com/it/home 6
Capitolo 3: Django Framework
Examples
Installazione e configurazione
Django è un framework completo per lo sviluppo web. Alimenta alcuni dei siti Web più popolari su
Internet.
Se si sta installando questo su OSX o Linux, il comando sopra riportato potrebbe causare un
errore di autorizzazione; per evitare questo errore, installa il pacchetto per il tuo account utente o
usa un ambiente virtuale:
Una volta installato, avrai accesso allo strumento di bootstrap django-admin , che creerà una
directory con alcune impostazioni predefinite per avviare lo sviluppo.
Django è uno stack completo, ricco di funzionalità per lo sviluppo web. Raggruppa un sacco di
funzionalità per fornire un'esperienza comune, rapida e produttiva per gli sviluppatori web.
I progetti Django consistono in impostazioni comuni e una o più applicazioni . Ogni applicazione è
un insieme di funzionalità insieme a dipendenze (come modelli e modelli) che sono raggruppate
insieme come moduli Python.
Lo script django bootstrapping crea automaticamente un file di impostazioni per il tuo progetto,
con le funzionalità più comuni abilitate.
Questo concetto di applicazioni consente una facile funzionalità plug-and-play e vi è una vasta
libreria di applicazioni disponibili per gestire le attività più comuni. Questo concetto di applicazioni
è fondamentale per Django; molte delle funzionalità integrate (come l'autenticazione dell'utente e il
sito di amministrazione) sono semplicemente app django.
Per creare la tua prima applicazione, dall'interno della directory del progetto:
https://riptutorial.com/it/home 7
yourapp è il nome della tua applicazione personalizzata.
1. Una serie di visualizzazioni : si tratta di parti di codice eseguite in risposta a una richiesta.
2. Uno o più modelli ; che sono un'astrazione per i database. Questi consentono di definire i
propri oggetti come oggetti Python e l'ORM integrato fornisce un'API amichevole per
l'archiviazione, il recupero e il filtraggio degli oggetti dai database.
3. Strettamente correlati ai modelli sono le migrazioni che sono script generati per fornire un
metodo coerente e affidabile per applicare le modifiche nei modelli al database.
Una view è qualsiasi parte di codice che risponde a una richiesta e restituisce una risposta. Le
viste normalmente restituiscono modelli insieme a un dizionario (chiamato contesto ) che di solito
contiene dati per segnaposto nel modello. Nei progetti di Django, le viste si trovano nel modulo
views.py delle applicazioni.
def simple_view(request):
return HttpResponse('<strong>Hello World</strong>')
def simple_template_view(request):
return render(request, 'some_template.html')
Un modello è semplicemente qualsiasi file e può opzionalmente contenere un markup speciale per
funzionalità aggiunte; ciò significa che le viste di Django possono restituire qualsiasi tipo di
risposta, non solo HTML.
In django, un modello è semplicemente un file che contiene tag speciali che possono essere
sostituiti da dati dalla vista.
https://riptutorial.com/it/home 8
L'esempio di modello canonico potrebbe essere:
Qui, la stringa {{ name }} identifica un segnaposto che può essere sostituito da un contesto.
Per rendere questo modello da una vista, possiamo passare il valore come dizionario:
def simple_view(request):
return render(request, 'template.html', {'name': 'Jim'})
Una volta che questa vista è resa, l'HTML risultante sarà Hello Jim, I am a template! .
In Django esiste un mapper url che mappa gli URL di funzioni specifiche (viste) che restituiscono
le risposte. Questa stretta separazione tra il layout del file system e il layout degli URL consente
una grande flessibilità durante la scrittura delle applicazioni.
Tutti i pattern URL sono memorizzati in uno o più file urls.py e c'è un file master urls.py che viene
letto prima da django.
Django analizza i pattern nell'ordine in cui sono scritti e si ferma quando trova una corrispondenza
con l'URL richiesto dall'utente. Se non vengono trovate corrispondenze, viene generato un errore.
Un pattern url consiste in un'espressione regolare Python, seguita da un callable (un metodo o
funzione) da chiamare quando quel pattern è abbinato. Questa funzione deve restituire una
risposta HTTP:
url(r'/hello$', simple_view)
https://riptutorial.com/it/home 9
Capitolo 4: File
Parametri
parametri Funzione
Osservazioni
La variabile r negli esempi contiene i dati binari completi del file che stai inviando.
Examples
Caricamento file semplice
url = 'http://your_url'
files = {'file': open('myfile.test', 'rb')}
r = requests.post(url, files=files)
url = 'http://httpbin.org/post'
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel',
{'Expires': '0'})}
r = requests.post(url, files=files)
url = 'http://httpbin.org/post'
files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
r = requests.post(url, files=files)
r.text
https://riptutorial.com/it/home 10
Capitolo 5: Invio e ricezione di JSON
Examples
POSTing JSON
Per POSTARE un corpo JSON, passare una struttura dati Python all'argomento json ; qui viene
pubblicato un dizionario, ma tutto ciò che può essere codificato in JSON lo farà:
import requests
requests prendono cura della codifica su JSON per te e imposta Content-Type su application/json .
Quando una risposta contiene JSON valido, basta usare il metodo .json() sull'oggetto Response
per ottenere il risultato decodificato:
response = requests.get('http://example.com/')
decoded_result = response.json()
Tuttavia, questo non fallisce con grazia; solleverà un JSONDecodeError se l'oggetto risposta non è
JSONDecodeError JSON.
Potresti voler controllare prima il tipo MIME del contenuto, per una gestione più agevole degli
errori:
if 'application/json' in response.headers['Content-Type']:
decoded_result = response.json()
else:
non_json_result = response.data
import requests
import json
https://riptutorial.com/it/home 11
params = {'id': 'blahblah', 'output': 'json'} # You could use
https://www.somesite.com/api/query?id=blahblah&output=json directly.
API = 'https://www.somesite.com/api/query'
APIcred = 'username','password'
Converti una stringa di JSON in un oggetto python con cui puoi lavorare. JSON ha un aspetto
visivo simile a quello di un pyt dict, ma ci sono differenze significative tra valori nulli, vero / falso,
ecc.
r_dict = json.loads(r.text)
print(r_dict)
Immagina che l'output appena stampato provenga da un database multilinea a più colonne e sia di
difficile lettura:
È possibile stampare () una versione più leggibile con json.dumps (). La riga sottostante codifica
l'oggetto python in una stringa di JSON con schede e lo stampa.
Produzione:
{
"row": [
{
"Country": "United States",
"pid": "cc12608f-4591-46d7-b8fe-6222e4cde074",
"Status": "",
"FormerLastName": "",
"Degree": "Business Administration"
},
{
"Country": "Britain",
"pid": "c9f2c6f7-f736-49d3-8adf-fd8d533bbd58",
"Status": "",
"FormerLastName": "",
"Degree": "General Management"
}
]
https://riptutorial.com/it/home 12
}
print(some_dict['BuildingA']['Room12'])
Ma il nostro campione ha un numero arbitrario di oggetti in un array, che è a sua volta annidato
come valore di una chiave! Questi sono accessibili con un numero di riga, a partire da 0.
r_dict['row'][1]['Country'] = 'Albania'
Ora inviamo questi dati a un'altra API. Le richieste possono accettare un dict direttamente
sull'argomento json, invece di codificare una stringa con json.dumps ().
https://riptutorial.com/it/home 13
Capitolo 6: Utilizzo delle richieste dietro un
proxy
Examples
Impostazione del proxy in codice Python
requests accetta un parametro proxies . Questo dovrebbe essere un dizionario che associa il
protocollo all'URL del proxy.
proxies = {
'http': 'http://proxy.example.com:8080',
'https': 'http://secureproxy.example.com:8090',
}
Si noti che nel dizionario abbiamo definito l'URL del proxy per due protocolli separati: HTTP e
HTTPS. Ogni mappa a un singolo URL e porta. Questo non significa che i due non possano
essere uguali, però. Questo è anche accettabile:
proxies = {
'http': 'http://secureproxy.example.com:8090',
'https': 'http://secureproxy.example.com:8090',
}
requests.get('http://example.org', proxies=proxies)
requests usa specifiche variabili d'ambiente automaticamente per il rilevamento del proxy.
Una volta impostate queste variabili di ambiente, il codice Python non ha bisogno di passare nulla
al parametro proxies .
requests.get('http://example.com')
https://riptutorial.com/it/home 14
Titoli di coda
S.
Capitoli Contributors
No
Automazione
dell'accesso tramite
2 lordzuko
Richieste su Single
Sign-On
4 File ReverseCold
Invio e ricezione di
5 bendodge, Martijn Pieters, OJFord, Olli, Stan
JSON
Utilizzo delle
6 richieste dietro un Andy
proxy
https://riptutorial.com/it/home 15