Come scaricare file in Python

Python offre diversi modi per scaricare file da Internet. Questo può essere fatto su HTTP usando il pacchetto urllib o la libreria delle richieste. Questo tutorial illustrerà come utilizzare queste librerie per scaricare file dagli URL usando Python.

RICHIESTE

La libreria delle richieste è una delle librerie più popolari in Python. Le richieste ti consentono di inviare  Richieste HTTP / 1.1 senza necessità di aggiungere manualmente stringhe di query ai tuoi URL o codificare in forma i tuoi dati POST.

Con la libreria delle richieste, è possibile eseguire molte funzioni tra cui:

  • aggiungendo i dati del modulo,
  • aggiungendo file multipart,
  • e accedere ai dati di risposta di Python

FACENDO RICHIESTE

Il primo che devi fare è installare la libreria ed è semplice come:

richieste di installazione di pip

Per verificare se l'installazione ha avuto successo, puoi eseguire un test molto semplice nell'interprete python semplicemente digitando:

richieste di importazione

Se l'installazione ha avuto successo, non ci saranno errori.

Le richieste HTTP includono:

  • OTTENERE
  • INVIARE
  • METTERE
  • ELIMINA
  • OPZIONI
  • CAPO

Fare una richiesta GET

Fare richieste è molto semplice come illustrato di seguito.

richieste di importazione req = requests.get ("http://www.google.com")

Il comando precedente otterrà la pagina web di google e memorizzerà le informazioni nelreq variabile. Possiamo quindi continuare a ottenere anche altri attributi.

Ad esempio, per sapere se il recupero della pagina web di google ha avuto esito positivo, richiederemo lo status_code.

richieste di importazione req = requests.get ("http://www.google.com") req.status_code 200 # 200 indica una richiesta riuscita

Che cosa succede se vogliamo scoprire il tipo di codifica della pagina web di Google?

req.encoding ISO-8859-1

Potresti anche voler sapere il contenuto della risposta.

req.text

Questo è solo un contenuto troncato della risposta.

'Google>

Fare una richiesta POST

In termini semplici, una richiesta POST utilizzata per creare o aggiornare i dati. Questo è particolarmente usato nella presentazione di moduli.

Supponiamo che tu abbia un modulo di registrazione che accetta un indirizzo email e una password come dati di input, quando fai clic sul pulsante di invio per la registrazione, la richiesta di posta sarà come mostrato di seguito.

data = "email": "[email protected]", "password": "12345") req = requests.post ("http://www.google.com, parametri = dati)

Fare una richiesta PUT

Una richiesta PUT è simile a una richiesta POST. È usato per aggiornare i dati. Per esempio, l'API sotto mostra come fare a METTERE richiesta.

data = "nome": "tutsplus", "telefono": "12345") r.put ("http://www.contact.com, params = data")

Effettuare una richiesta DELETE

Una richiesta DELETE, come suggerisce il nome, viene utilizzata per eliminare i dati. Di seguito è riportato un esempio di a ELIMINA richiesta

data = 'name': 'Tutsplus' url = "https://www.contact.com/api/") response = requests.delete (url, params = data)

pacchetto urllib

urllib è un pacchetto che raccoglie diversi moduli per lavorare con gli URL, in particolare:

  • urllib.request per aprire e leggere gli URL.
  • urllib.error contenente le eccezioni sollevate da urllib.request
  • urllib.parse per analizzare gli URL.
  • urllib.robotparser per l'analisi robots.txt File.

urllib.request  offre un'interfaccia molto semplice, sotto forma di urlopen funzione in grado di recuperare URL usando una varietà di protocolli diversi. Offre anche un'interfaccia leggermente più complessa per la gestione di autenticazione di base, cookie, proxy e.t. c.

Come recuperare URL con urllib

Il modo più semplice per usare urllib.request è il seguente:

import urllib.request con urllib.request.urlopen ('http://python.org/') come risposta: html = response.read () 

Se desideri recuperare una risorsa Internet e archiviarla, puoi farlo tramite il urlretrieve () funzione.

import urllib.request filename, headers = urllib.request.urlretrieve ('http://python.org/') html = open (nomefile) 

Download di immagini con Python

In questo esempio, vogliamo scaricare l'immagine disponibile su questo link usando sia il modulo di richiesta llibrary che urllib. 

url = 'https://www.python.org/static/opengraph-icon-200x200.png' # download con urllib # ha importato la libreria urllib import urllib # Copia un oggetto di rete in un file locale urllib.urlretrieve (url, " python.png ") # download con richieste # importa le richieste di importazione della libreria richieste # scarica il contenuto dell'URL in formato binario r = requests.get (url) # metodo aperto per aprire un file sul tuo sistema e scrivere il contenuto con open (" python1.png "," wb ") come codice: code.write (r.content) 

Scarica i file PDF con Python

In questo esempio, scaricheremo un pdf sulle tendenze di google da questo link.

url = 'https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # download con urllib # importare il pacchetto urllib import urllib # Copia un oggetto di rete in un file locale urllib.urlretrieve (url, "tutorial.pdf") # download con richieste # importa le richieste di importazione della libreria richieste # scarica il contenuto del file in formato binario r = requests.get (url) # metodo aperto per aprire un file sul tuo sistema e scrivere i contenuti con open ("tutorial1.pdf", "wb") come codice: code.write (r.content) 

Scarica i file zip con Python

In questo esempio, stiamo per scaricare il contenuto di un repository GitHub trovato in questo link e archiviare il file localmente.

url = 'https://codeload.github.com/fogleman/Minecraft/zip/master' # download con richieste # importa le richieste di importazione della libreria richieste # scarica il contenuto del file in formato binario r = requests.get (url) # open metodo per aprire un file sul tuo sistema e scrivere i contenuti con open ("minemaster1.zip", "wb") come codice: code.write (r.content) # download con urllib # importare la libreria urllib import urllib # Copia un oggetto di rete su un file locale urllib.urlretrieve (url, "minemaster.zip") 

Scarica video con Python

In questo esempio, vogliamo scaricare la conferenza video disponibile su questa pagina

url = 'https://www.youtube.com/watch?v=aDwCCUfNFug' nome_video = url.split ('/') [- 1] # utilizzando le richieste # importate le richieste di importazione della libreria richieste stampa "Download del file:% s "% video_name # scarica il contenuto dell'URL in formato binario r = requests.get (url) # metodo aperto per aprire un file sul tuo sistema e scrivere il contenuto con open ('tutorial.mp4', 'wb') come f: f .write (r.content) # utilizzando urllib # ha importato la libreria urllib import urllib print "Download di file:% s"% video_name # Copia un oggetto di rete in un file locale urllib.urlretrieve (url, "tutorial2.mp4") 

Conclusione

Questo tutorial ha coperto i metodi più comunemente utilizzati per scaricare i file e i formati di file più comuni. Anche se scriverai meno codice quando usi il urllib modulo, il richieste il modulo è preferito per la sua semplicità, popolarità e una vasta gamma di funzionalità tra cui:

  • Keep-Alive e pool di connessioni
  • Domini e URL internazionali
  • Sessioni con Cookie Persistence
  • Verifica SSL in stile browser
  • Decodifica automatica dei contenuti
  • Autenticazione di base / digest
  • Eleganti cookie chiave / valore
  • Decompressione automatica
  • Corpi di risposta Unicode
  • Supporto proxy HTTP (S)
  • Caricamenti di file multipart
  • Download in streaming
  • Timeout della connessione
  • Richieste Chunked
  • .netrc Supporto