Hoe bestanden te downloaden in Python

Python biedt verschillende manieren om bestanden van internet te downloaden. Dit kan via HTTP worden gedaan met behulp van het urllib-pakket of de verzoekenbibliotheek. Deze tutorial zal bespreken hoe deze bibliotheken te gebruiken om bestanden te downloaden van URL's met behulp van Python.

AANVRAGEN

De verzoekenbibliotheek is een van de meest populaire bibliotheken in Python. Met verzoeken kunt u verzenden  HTTP / 1.1-aanvragen zonder dat u handmatig tekenreeksen aan uw URL's hoeft toe te voegen of uw POST-gegevens kunt coderen.

Met de verzoekenbibliotheek kunt u veel functies uitvoeren, waaronder:

  • formuliergegevens toevoegen,
  • multipart-bestanden toevoegen,
  • en toegang tot de reactiegegevens van Python

VERZOEKEN DOEN

De eerste die je hoeft te doen is om de bibliotheek te installeren en het is zo simpel als:

pip install requests

Om te testen of de installatie succesvol is geweest, kun je een heel eenvoudige test uitvoeren in je python-interpreter door simpelweg te typen:

importeer verzoeken

Als de installatie succesvol is verlopen, zijn er geen fouten.

HTTP-verzoeken omvatten:

  • KRIJGEN
  • POST
  • LEGGEN
  • DELETE
  • OPTIES
  • HOOFD

Een GET-verzoek doen

Verzoeken indienen is heel eenvoudig, zoals hieronder wordt geïllustreerd.

importverzoeken req = requests.get ("http://www.google.com")

Het bovenstaande commando krijgt de Google-webpagina en slaat de informatie op in dereq variabel. We kunnen dan ook andere kenmerken krijgen.

Om bijvoorbeeld te weten of het ophalen van de Google-webpagina succesvol was, zullen we de statuscode opvragen.

importverzoeken req = requests.get ("http://www.google.com") req.status_code 200 # 200 betekent een succesvol verzoek

Wat als we het coderingstype van de Google-webpagina willen weten??

req.encoding ISO-8859-1

Misschien wilt u ook de inhoud van het antwoord weten.

req.text

Dit is slechts een ingekorte inhoud van het antwoord.

'Google>

Een POST-aanvraag doen

In eenvoudige bewoordingen werd een POST-aanvraag gebruikt om gegevens te creëren of bij te werken. Dit wordt vooral gebruikt bij het indienen van formulieren.

Laten we aannemen dat je een registratieformulier hebt dat een e-mailadres en wachtwoord als invoergegevens inneemt, wanneer je op de verzendknop klikt voor registratie, zal het verzoek om een ​​bericht zoals hieronder getoond worden.

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

Een PUT-verzoek doen

Een PUT-verzoek lijkt op een POST-aanvraag. Het wordt gebruikt om gegevens bij te werken. De onderstaande API laat bijvoorbeeld zien hoe je een a moet doen LEGGEN verzoek.

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

Een VERWIJDEREN-verzoek doen

Een VERWIJDEREN verzoek, zoals de naam doet vermoeden, wordt gebruikt om gegevens te verwijderen. Hieronder staat een voorbeeld van een DELETE verzoek

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

urllib-pakket

urllib is een pakket dat verschillende modules verzamelt voor het werken met URL's, namelijk:

  • urllib.request voor het openen en lezen van URL's.
  • urllib.error met de uitzonderingen opgeworpen door urllib.request
  • urllib.parse voor het parseren van URL's.
  • urllib.robotparser voor ontleden robots.txt bestanden.

urllib.request  biedt een zeer eenvoudige interface, in de vorm van de urlopen functie waarmee URL's kunnen worden opgehaald met behulp van verschillende protocollen. Het biedt ook een iets complexere interface voor het afhandelen van basisverificatie, cookies, proxies e.t. c.

URL's ophalen met urllib

De eenvoudigste manier om urllib.request te gebruiken is als volgt:

import urllib.request met urllib.request.urlopen ('http://python.org/') als antwoord: html = response.read () 

Als u een internetbron wilt ophalen en opslaan, kunt u dit doen via de urlretrieve () functie.

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

Afbeeldingen downloaden met Python

In dit voorbeeld willen we de afbeelding die beschikbaar is op deze koppeling downloaden met behulp van zowel de verzoek-bibliotheek als de URL-module. 

url = 'https://www.python.org/static/opengraph-icon-200x200.png' # downloaden met urllib # geïmporteerd de urllib bibliotheek import urllib # Kopieer een netwerk object naar een lokaal bestand urllib.urlretrieve (url, " python.png ") # downloaden met verzoeken # importeer de verzoeken van de verzoekenbibliotheek import # download de url-inhoud in binair formaat r = requests.get (url) # open methode om een ​​bestand op uw systeem te openen en schrijf de inhoud met open (" python1.png "," wb ") als code: code.write (r.content) 

Download PDF-bestanden met Python

In dit voorbeeld downloaden we een pdf over google-trends via deze link.

url = 'https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # downloaden met urllib # importeer het urllib-pakket import urllib # Kopieer een netwerkobject naar een lokaal bestand urllib.urlretrieve (url, "tutorial.pdf") # downloaden met verzoeken # importeer de aanvragen bibliotheek importeer aanvragen # download de bestandsinhoud in binair formaat r = requests.get (url) # open methode om een ​​bestand te openen op uw systeem en schrijf de inhoud met open ("tutorial1.pdf", "wb") als code: code.write (r.content) 

Zip-bestanden downloaden met Python

In dit voorbeeld gaan we de inhoud van een GitHub-repository downloaden die is gevonden in deze link en het bestand lokaal opslaan.

url = 'https://codeload.github.com/fogleman/Minecraft/zip/master' # downloaden met aanvragen # importeer de verzoeken van de verzoekenbibliotheek import # download de bestandsinhoud in binair formaat r = requests.get (url) # open methode om een ​​bestand op uw systeem te openen en de inhoud te schrijven met open ("minemaster1.zip", "wb") als code: code.write (r.content) # downloaden met urllib # importeer de urllib bibliotheek import urllib # Kopieer een netwerk object naar een lokaal bestand urllib.urlretrieve (url, "minemaster.zip") 

Video's downloaden met Python

In dit voorbeeld willen we de videocolleges downloaden die beschikbaar zijn op deze pagina

url = 'https://www.youtube.com/watch?v=aDwCCUfNFug' video_name = url.split ('/') [- 1] # gebruik van verzoeken # heeft de importverzoeken van de verzoekenbibliotheek geïmporteerd 'Downloading file:% s "% video_name # download de url-inhoud in binair formaat r = requests.get (url) # open methode om een ​​bestand op uw systeem te openen en schrijf de inhoud met open ('tutorial.mp4', 'wb') als f: f .write (r.content) # urllib # importeerde de urllib bibliotheek import urllib print "Bestand downloaden:% s"% video_name # Kopieer een netwerk object naar een lokaal bestand urllib.urlretrieve (url, "tutorial2.mp4") 

Conclusie

Deze tutorial behandelt de meest gebruikte methoden om bestanden te downloaden, evenals de meest voorkomende bestandsindelingen. Ook al schrijf je minder code tijdens het gebruik van de urllib module, de verzoeken module heeft de voorkeur vanwege zijn eenvoud, populariteit en een breed scala aan functies, waaronder:

  • Keep-Alive & Connection Pooling
  • Internationale domeinen en URL's
  • Sessies met Cookie Persistence
  • Browser-stijl SSL-verificatie
  • Automatische Content Decoding
  • Basic / Digest-verificatie
  • Elegant Key / Value Cookies
  • Automatische decompressie
  • Unicode-antwoordorganen
  • HTTP (S) Proxy-ondersteuning
  • Multipart bestandsuploads
  • Streaming-downloads
  • Verbindingstime-outs
  • Chunked Requests
  • .netrc Ondersteuning