Hur man hämtar filer i Python

Python erbjuder flera sätt att ladda ner filer från internet. Detta kan göras via HTTP med hjälp av urllib-paketet eller begäran-biblioteket. Denna handledning diskuterar hur man använder dessa bibliotek för att ladda ner filer från webbadresser med Python.

BEGÄRAN

Behovsbiblioteket är ett av de mest populära biblioteken i Python. Förfrågningar tillåter dig att skicka  HTTP / 1.1-förfrågningar utan att man manuellt måste lägga till frågesträngar i dina webbadresser, eller formulär-koda din POST-data.

Med begäran bibliotek kan du utföra många funktioner, inklusive:

  • lägger till formulärdata,
  • lägger till multipartfiler,
  • och åtkomst till svardata från Python

GÖR FÖRFARANDEN

Det första du behöver göra är att installera biblioteket och det är så enkelt som:

pip installeringsförfrågningar

För att testa om installationen har lyckats kan du göra ett mycket enkelt test i din python tolk genom att helt enkelt skriva:

importförfrågningar

Om installationen har lyckats kommer det inga fel.

HTTP-förfrågningar inkluderar:

  • SKAFFA SIG
  • POSTA
  • SÄTTA
  • RADERA
  • ALTERNATIV
  • HUVUD

Gör en GET-förfrågan

Att göra förfrågningar är väldigt lätt som illustreras nedan.

importförfrågningar req = requests.get ("http://www.google.com")

Ovanstående kommando kommer att få google webbsidan och lagra informationen ireq variabel. Vi kan sedan fortsätta att få andra attribut också.

Om du till exempel vill veta om hämtningen av google webbsidan var framgångsrik, frågar vi status_koden.

importförfrågningar req = requests.get ("http://www.google.com") req.status_code 200 # 200 betyder en lyckad förfrågan

Vad händer om vi vill ta reda på kodningstypen på Googles webbsida?

req.encoding ISO-8859-1

Du kanske också vill veta innehållet i svaret.

req.text

Detta är bara ett avkortat innehåll i svaret.

'Google>

Gör en POST-förfrågan

I enkla termer används en POST-begäran för att skapa eller uppdatera data. Detta används speciellt vid inlämning av blanketter.

Låt oss anta att du har ett registreringsformulär som tar en e-postadress och ett lösenord som inmatningsdata, när du klickar på inlämningsknappen för registrering, kommer inläggsförfrågan att vara som visas nedan.

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

Gör en PUT-förfrågan

En PUT-förfrågan liknar en POST-förfrågan. Det brukade uppdatera data. Till exempel visar API nedan hur man gör a SÄTTA begäran.

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

Gör en DELETE-förfrågan

En DELETE-förfrågan, som namnet antyder, används för att radera data. Nedan är ett exempel på a RADERA begäran

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

urllibpaketet

urllib är ett paket som samlar flera moduler för att arbeta med webbadresser nämligen:

  • urllib.request för att öppna och läsa webbadresser.
  • urllib.error innehållande de undantag som uppkommit av urllib.request
  • urllib.parse för att analysera webbadresser.
  • urllib.robotparser för analysering robots.txt filer.

urllib.request  erbjuder ett mycket enkelt gränssnitt, i form av urlopen funktion som kan hämta webbadresser med olika protokoll. Det erbjuder också ett något mer komplext gränssnitt för hantering av grundläggande autentisering, cookies, proxies e.t. c.

Så här hämtar du URL-adresser med urllib

Det enklaste sättet att använda urllib.request är som följer:

importera urllib.request med urllib.request.urlopen ('http://python.org/') som svar: html = response.read () 

Om du vill hämta en internetresurs och lagra den kan du göra det via urlretrieve () fungera.

importera urllib.request filnamn, rubriker = urllib.request.urlretrieve ('http://python.org/') html = open (filnamn) 

Ladda ner bilder med Python

I det här exemplet vill vi ladda ner bilden som är tillgänglig på den här länken med hjälp av både request library och urllib-modulen. 

url = 'https://www.python.org/static/opengraph-icon-200x200.png' # nedladdning med urllib # importerade urllib biblioteket import urllib # Kopiera ett nätverksobjekt till en lokal fil urllib.urlretrieve (url, " python.png ") # ladda ner med förfrågningar # importera begäran för bibliotekets importförfrågningar # ladda ner innehållet i binärformat r = requests.get (url) # öppna metod för att öppna en fil på ditt system och skriv innehållet med öppet (" python1.png "," wb ") som kod: code.write (r.content) 

Hämta PDF-filer med Python

I det här exemplet laddar vi ner en pdf om google trender från den här länken.

url = 'https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # nedladdning med urllib # importera urllib-paketet import urllib # Kopiera ett nätverksobjekt till en lokal fil urllib.urlretrieve (url, "tutorial.pdf") # ladda ner med förfrågningar # importera begäran för bibliotekets importförfrågningar # ladda ner innehållet i binärt format r = requests.get (url) # öppen metod för att öppna en fil på din system och skriv innehållet med öppet ("tutorial1.pdf", "wb") som kod: code.write (r.content) 

Hämta zip-filer med python

I det här exemplet kommer vi hämta innehållet i ett GitHub-arkiv som finns i den här länken och lagra filen lokalt.

url = 'https://codeload.github.com/fogleman/Minecraft/zip/master' # hämtar med förfrågningar # importera förfrågningsbibliotekets importförfrågningar # ladda ner innehållet i binärt format r = requests.get (url) # öppen metod för att öppna en fil på ditt system och skriva innehållet med öppet ("minemaster1.zip", "wb") som kod: code.write (r.content) # ladda ner med urllib # importera urllib biblioteket import urllib # Kopiera en nätverksobjekt till en lokal fil urllib.urlretrieve (url, "minemaster.zip") 

Hämta videor med python

I det här exemplet vill vi ladda ner videoföreläsningen som finns tillgänglig på den här sidan

url = 'https://www.youtube.com/watch?v=aDwCCUfNFug' video_name = url.split ('/') [- 1] # användarförfrågningar # importerade begäran för bibliotekets importförfrågningar print "Nedladdning av fil:% s "% video_name # ladda ner innehållet i binärformat r = requests.get (url) # öppen metod för att öppna en fil på ditt system och skriv innehållet med öppet ('tutorial.mp4', 'wb') som f: f .write (r.content) # using urllib # importerade urllib biblioteket import urllib print "Nedladdning fil:% s"% video_name # Kopiera ett nätverksobjekt till en lokal fil urllib.urlretrieve (url, "tutorial2.mp4") 

Slutsats

Denna handledning har täckt de vanligaste metoderna för att ladda ner filer såväl som de vanligaste filformat. Även om du skriver mindre kod när du använder urllib modul, förfrågningar modulen är att föredra på grund av dess enkelhet, popularitet och ett brett utbud av funktioner, inklusive:

  • Keep-Alive & Connection Pooling
  • Internationella domäner och webbadresser
  • Sessioner med Cookie Persistence
  • SSL-verifiering i webbläsarstil
  • Automatisk innehållskodning
  • Basic / Digest Authentication
  • Eleganta nyckel- / värdekakor
  • Automatisk dekompression
  • Unicode Response Bodies
  • HTTP (S) Proxy Support
  • Flera filuppladdningar
  • Streaming överföringar
  • Anslutningstidsavbrott
  • Chunked Förfrågningar
  • .netrc Stöd