Python Internettoegang met Urllib.Request en urlopen()
โก Slimme samenvatting
urllib is de standaard Python module voor toegang tot internetgegevens, waardoor programma's kunnen worden geopend URLDe functie urllib.request.urlopen() maakt verbinding met een webadres en leest het serverantwoord direct in. Python.

De onderstaande secties leggen uit wat urllib is en hoe je een bestand opent. URL en de HTML ervan lezen, en hoe om te gaan met fouten, bestanden te downloaden en te kiezen tussen urllib en de requests-bibliotheek.
Wat is urllib?
urllib is een Python module die gebruikt kan worden voor het openen URLHet definieert functies en klassen om daarbij te helpen. URL acties.
Met PythonJe kunt ook gegevens van het internet ophalen, zoals XML, HTML en JSON, en vervolgens direct met deze gegevens werken. In de volgende paragrafen zullen we zien hoe je gegevens van het web kunt ophalen. We gebruiken hier bijvoorbeeld een Guru99 video URL, er toegang toe krijgen via Pythonen print het HTML-bestand hiervan URL.
Het urllib-pakket groepeert verschillende modules: urllib.request voor het openen van URLs, urllib.error voor de uitzonderingen die verzoeken kunnen veroorzaken, urllib.parse voor het bouwen en parsen URLs, en urllib.robotparser voor het lezen van robots.txt-bestanden.
Hoe te openen URL Urllib gebruiken
Voordat we de code uitvoeren om verbinding te maken met internetdata, moeten we de volgende pakketten importeren: URL bibliotheekmodule, ofwel "urllib".
- URLlib importeren
- Definieer uw hoofdfunctie
- Declareer de variabele webUrl
- Roep vervolgens de urlopen-functie aan in de urllib-bibliotheek.
- De URL We openen binnenkort de Guru99 handleidingen over YouTube
- Vervolgens printen we de resultaatcode.
- De resultaatcode wordt opgehaald door de functie `getcode` aan te roepen op de variabele `webUrl` die we hebben aangemaakt.
- We zetten dat om naar een tekenreeks, zodat die kan worden samengevoegd met onze tekenreeks "resultaatcode".
- Dit is een standaard HTTP-code "200", wat aangeeft dat het HTTP-verzoek succesvol is verwerkt.
Hoe krijg je een HTML-bestand van een URL in Python
Je kunt het HTML-bestand ook lezen met behulp van de functie `read()` in PythonWanneer je de code uitvoert, verschijnt het HTML-bestand in de console.
- Roep de functie `read()` aan op de variabele `webUrl`.
- Met de `read()`-methode kunt u de inhoud van gegevensbestanden lezen.
- Lees de volledige inhoud van de URL in een variabele genaamd data
- Voer de code uit en de gegevens worden in HTML-formaat weergegeven.
Hier is de volledige code:
Python 2 Voorbeeld
# # 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 Voorbeeld
# # 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)
Hoe om te gaan met urllib-fouten: URLFout en HTTPError
Een verzoek slaagt niet altijd. Wanneer er iets misgaat, genereert urllib een uitzondering in plaats van gegevens terug te geven. Het is daarom belangrijk om deze fouten af โโte handelen. De module urllib.error definieert twee belangrijke uitzonderingsklassen.
- HTTP-fout Deze melding wordt gegenereerd wanneer de server een foutstatuscode retourneert, zoals 404 Not Found of 500 Internal Server Error. De melding bevat de statuscode en de inhoud van het antwoord.
- URLFout Deze foutmelding wordt gegenereerd wanneer de server helemaal niet bereikbaar is, bijvoorbeeld vanwege een onjuiste domeinnaam of een ontbrekende internetverbinding. De foutmelding bevat een attribuut met een reden die de oorzaak van de fout verklaart.
Omdat HTTPError een subklasse is van URLFout, vang altijd eerst HTTPError op, zodat elk fouttype afzonderlijk wordt afgehandeld:
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)
Door deze uitzonderingen af โโte handelen, voorkomt u dat uw programma vastloopt en kunt u het probleem registreren, het verzoek opnieuw proberen of terugvallen op gegevens uit de cache.
Hoe download je een bestand van een URL Met behulp van urllib
Een lezen URL In het geheugen opslaan werkt prima voor kleine pagina's, maar voor afbeeldingen, PDF-documenten of datasets is het eenvoudiger om het antwoord direct op de schijf op te slaan. De module urllib.request biedt twee eenvoudige manieren om dit te doen.
De functie urlretrieve() downloadt een URL rechtstreeks naar een lokaal bestand in รฉรฉn regel:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
Voor meer controle, open de URL en schrijf de bytes zelf. Open het lokale bestand in binaire modus, want urlopen() retourneert bytes, geen tekst:
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())
Voor zeer grote bestanden kunt u het lezen en schrijven in een lus uitvoeren met behulp van response.read(8192), zodat het hele bestand nooit tegelijk in het geheugen wordt vastgehouden.
urllib versus de requests-bibliotheek in Python
urllib maakt deel uit van de Python Het is een standaardbibliotheek, dus het werkt overal zonder installatie. De externe requests-bibliotheek is niet ingebouwd, maar veel ontwikkelaars geven er de voorkeur aan voor dagelijkse HTTP-toepassingen omdat de syntaxis korter en leesbaarder is.
De belangrijkste verschillen zijn:
- Installatie: urllib wordt meegeleverd met Python, terwijl requests met pip geรฏnstalleerd moet worden.
- Decodering: urllib retourneert onbewerkte bytes die je zelf moet decoderen, terwijl requests tekst en JSON automatisch decodeert.
- Gemak: De `requests`-module verwerkt sessies, cookies en aangepaste headers met minder code.
- Bijgebouwen: urllib voegt niets toe, terwijl requests eronder afhankelijk is van urllib3.
Kies urllib als je geen afhankelijkheden wilt of alleen een snelle, eenmalige aanvraag nodig hebt. Kies requests voor grotere projecten met authenticatie, sessies of frequente API-aanroepen. Beide versturen dezelfde onderliggende HTTP-aanvragen, dus de keuze komt neer op gebruiksgemak versus een kleinere lijst met afhankelijkheden.


