Python Internetåtkomst med Urllib.Request och urlopen()
⚡ Smart sammanfattning
urllib är standarden Python modul för åtkomst till internetdata, vilket gör att program kan öppnas URLs och hämta HTML-, JSON- eller binärinnehåll. Funktionen urllib.request.urlopen() ansluter till en webbadress och läser serversvaret direkt in i Python.

Avsnitten nedan förklarar vad urllib är, hur man öppnar en URL och läsa dess HTML, och hur man hanterar fel, laddar ner filer och väljer mellan urllib och förfrågningsbiblioteket.
Vad är urllib?
urllib är en Python modul som kan användas för att öppna URLs. Den definierar funktioner och klasser för att hjälpa till med URL åtgärder.
Med Python, kan du också komma åt och hämta data från internet, såsom XML, HTML och JSON, och sedan arbeta direkt med dessa data. I avsnitten nedan kommer vi att se hur man hämtar data från webben. Till exempel, här använder vi en Guru99 video URL, få åtkomst till den med hjälp av Pythonoch skriv ut HTML-filen för detta URL.
Paketet urllib grupperar flera moduler: urllib.request för öppning URLs, urllib.error för de undantag som förfrågningar kan generera, urllib.parse för att bygga och parsa URLs och urllib.robotparser för att läsa robots.txt-filer.
Hur man öppnar URL använder Urllib
Innan vi kör koden för att ansluta till internetdata måste vi importera URL biblioteksmodulen eller ”urllib”.
- Importera urllib
- Definiera din huvudfunktion
- Deklarera variabeln webUrl
- Anropa sedan urlopen-funktionen i urllib-biblioteket
- Ocuco-landskapet URL vi öppnar är Guru99 handledning om YouTube
- Därefter skriver vi ut resultatkoden
- Resultatkoden hämtas genom att anropa funktionen getcode på webUrl-variabeln som vi har skapat.
- Vi konverterar det till en sträng, så att den kan sammanfogas med vår sträng "resultatkod"
- Detta kommer att vara en vanlig HTTP-kod "200", vilket indikerar att HTTP-begäran har bearbetats korrekt
Hur man hämtar en HTML-fil från en URL in Python
Du kan också läsa HTML-filen genom att använda funktionen read() i PythonNär du kör koden visas HTML-filen i konsolen.
- Anropa read()-funktionen på webUrl-variabeln
- Metoden read() låter dig läsa innehållet i datafiler
- Läs hela innehållet i URL till en variabel som heter data
- Kör koden så skriver den ut informationen i HTML-format
Här är hela koden:
Python 2 Exempel
# # read the data from the URL and print it # import urllib2 def main(): # open a connection to a URL using urllib2 webUrl = urllib2.urlopen("https://www.youtube.com/user/guru99com") #get the result code and print it print "result code: " + str(webUrl.getcode()) # read the data from the URL and print it data = webUrl.read() print data if __name__ == "__main__": main()
Python 3 Exempel
# # read the data from the URL and print it # import urllib.request # open a connection to a URL using urllib webUrl = urllib.request.urlopen('https://www.youtube.com/user/guru99com') #get the result code and print it print ("result code: " + str(webUrl.getcode())) # read the data from the URL and print it data = webUrl.read() print (data)
Så här hanterar du urllib-fel: URLFel och HTTP-fel
En begäran lyckas inte alltid. När något går fel genererar urllib ett undantag istället för att returnera data, så det är viktigt att hantera dessa fel. Modulen urllib.error definierar två huvudsakliga undantagsklasser.
- HTTP-fel utlöses när servern returnerar en felstatuskod, till exempel 404 Not Found (Inte hittad) eller 500 Internal Server Error (Internal Server Error). Den innehåller statuskoden och svarstexten.
- URLFel aktiveras när servern inte kan nås alls, till exempel på grund av fel domännamn eller ingen internetanslutning. Den har ett reason-attribut som förklarar felet.
Eftersom HTTPError är en underklass av URLFel, fånga alltid HTTPError först så att varje feltyp hanteras separat:
from urllib.request import urlopen from urllib.error import HTTPError, URLError try: response = urlopen("https://www.guru99.com/no-such-page.html") data = response.read() except HTTPError as error: print("HTTP error:", error.code) except URLError as error: print("URL error:", error.reason)
Att hantera dessa undantag förhindrar att programmet kraschar och låter dig logga problemet, försöka utföra begäran igen eller återgå till cachade data.
Hur man laddar ner en fil från en URL Använda urllib
Läser en URL into memory fungerar för små sidor, men för bilder, PDF-dokument eller dataset är det enklare att spara svaret direkt till disk. Modulen urllib.request erbjuder två enkla sätt att göra detta.
Funktionen urlretrieve() laddar ner en URL direkt till en lokal fil på en enda rad:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
För mer kontroll, öppna URL och skriv bytena själv. Öppna den lokala filen i binärt läge eftersom urlopen() returnerar byte, inte text:
from urllib.request import urlopen with urlopen("https://example.com/data.zip") as response: with open("data.zip", "wb") as file: file.write(response.read())
För mycket stora filer, läs och skriv i en loop med hjälp av response.read(8192) så att hela filen aldrig lagras i minnet samtidigt.
urllib kontra förfrågningsbiblioteket i Python
urllib är en del av Python standardbibliotek, så det fungerar överallt utan installation. Tredjepartsbiblioteket för förfrågningar är inte inbyggt, men många utvecklare föredrar det för vardagligt HTTP-arbete eftersom dess syntax är kortare och mer lättläst.
De viktigaste skillnaderna är:
- Installation: urllib levereras med Python, medan förfrågningar måste installeras med pip.
- Avkodning: urllib returnerar råa byte som du avkodar själv, medan requests avkodar text och JSON automatiskt.
- Bekvämlighet: förfrågningar hanterar sessioner, cookies och anpassade rubriker med mindre kod.
- beroenden: urllib lägger inte till någon, medan förfrågningar förlitar sig på urllib3 nedanför.
Välj urllib när du inte vill ha några beroenden eller bara behöver en snabb, engångsförfrågan. Välj förfrågningar för större projekt som involverar autentisering, sessioner eller frekventa API-anrop. Båda skickar samma underliggande HTTP-förfrågningar, så beslutet handlar om bekvämlighet kontra en mindre beroendelista.


