Python Internetzugriff mit Urllib.Request und urlopen()

โšก Intelligente Zusammenfassung

urllib ist der Standard Python Modul fรผr den Zugriff auf Internetdaten, das das ร–ffnen von Programmen ermรถglicht URLs und rufen HTML-, JSON- oder Binรคrinhalte ab. Die Funktion urllib.request.urlopen() stellt eine Verbindung zu einer Webadresse her und liest die Serverantwort direkt ein. Python.

  • ๐Ÿ”˜ Standardbibliothek: urllib wird mitgeliefert Python und bรผndelt die Module request, error, parse und robotparser fรผr URL Aufgaben.
  • โ˜‘๏ธ ร–ffne eine URL: Die Funktion urllib.request.urlopen() รถffnet eine Verbindung, und getcode() gibt den HTTP-Status zurรผck, z. B. 200.
  • โœ… Lesen Sie die Antwort: Die Methode read() gibt Rohbytes zurรผck, die von decode(โ€œutf-8โ€) in lesbaren Text umgewandelt werden.
  • ๐Ÿงช Fehlerbehandlung: HTTPError abfangen und URLFehler von urllib.error, daher fรผhren fehlgeschlagene Anfragen nie zum Absturz des Programms.
  • ๏ธ Dateien herunterladen: Die Funktion urlretrieve() speichert alle URL Direkt auf Festplatte speichern, ideal fรผr Bilder, PDFs und Datensรคtze.
  • ๐Ÿค– KI-fรคhig: urllib ruft Datensรคtze und API-Daten ab, die maschinelle Lernmodelle und KI-Pipelines speisen.

Python Internetzugang รผber Urllib

Die folgenden Abschnitte erklรคren, was urllib ist und wie man eine Datei รถffnet. URL und den HTML-Code zu lesen, sowie zu lernen, wie man mit Fehlern umgeht, Dateien herunterlรคdt und zwischen urllib und der requests-Bibliothek wรคhlt.

Was ist URLlib?

urllib ist ein Python Modul, das zum ร–ffnen verwendet werden kann URLs. Es definiert Funktionen und Klassen, die dabei helfen URL Aktionen.

Mit PythonSie kรถnnen auch Daten aus dem Internet abrufen, beispielsweise XML-, HTML- und JSON-Daten, und diese dann direkt bearbeiten. In den folgenden Abschnitten erfahren Sie, wie Sie Daten aus dem Web abrufen. Hier verwenden wir beispielsweise โ€ฆ Guru99 Video URL, greifen Sie darauf zu mit Pythonund drucken Sie die HTML-Datei davon aus URL.

Das urllib-Paket fasst mehrere Module zusammen: urllib.request zum ร–ffnen URLs, urllib.error fรผr die Ausnahmen, die Anfragen auslรถsen kรถnnen, urllib.parse fรผr das Erstellen und Parsen URLs und urllib.robotparser zum Lesen von robots.txt-Dateien.

Wie ร–ffnen URL Verwendung von Urllib

Bevor wir den Code zum Herstellen einer Internetverbindung ausfรผhren, mรผssen wir die URL Bibliotheksmodul oder โ€žurllibโ€œ.

ร–ffne URL Verwendung von Urllib

  • URLlib importieren
  • Definieren Sie Ihre Hauptfunktion
  • Deklarieren Sie die Variable webUrl
  • Rufen Sie anschlieรŸend die Funktion urlopen der Bibliothek urllib auf.
  • Das URL Wir erรถffnen das Guru99 Tutorial zu YouTube
  • Als Nรคchstes geben wir den Ergebniscode aus.
  • Der Ergebniscode wird durch Aufruf der Funktion โ€žgetcodeโ€œ fรผr die von uns erstellte Variable โ€žwebUrlโ€œ abgerufen.
  • Wir wandeln diesen Wert in eine Zeichenkette um, damit er mit unserer Zeichenkette โ€žErgebniscodeโ€œ verkettet werden kann.
  • Dies ist der regulรคre HTTP-Code โ€ž200โ€œ, der anzeigt, dass die HTTP-Anfrage erfolgreich verarbeitet wurde.

Wie man eine HTML-Datei aus einem URL in Python

Sie kรถnnen die HTML-Datei auch mit der Funktion read() lesen. PythonWenn Sie den Code ausfรผhren, wird die HTML-Datei in der Konsole angezeigt.

HTML-Datei von URL in Python

  • Rufen Sie die Funktion read() fรผr die Variable webUrl auf.
  • Die Methode read() ermรถglicht es Ihnen, den Inhalt von Datendateien zu lesen.
  • Lesen Sie den gesamten Inhalt des URL in einer Variablen namens Daten
  • Fรผhren Sie den Code aus, und die Daten werden im HTML-Format ausgegeben.

Hier ist der vollstรคndige Code:

Python 2 Beispiel

#  
# 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 Beispiel

#
# 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)

Umgang mit urllib-Fehlern: URLFehler und HTTP-Fehler

Eine Anfrage ist nicht immer erfolgreich. Wenn ein Fehler auftritt, lรถst urllib eine Ausnahme aus, anstatt Daten zurรผckzugeben. Daher ist es wichtig, diese Fehler zu behandeln. Das Modul urllib.error definiert zwei Hauptklassen fรผr Ausnahmen.

  • HTTP-Fehler Diese Ausnahme wird ausgelรถst, wenn der Server einen Fehlerstatuscode zurรผckgibt, z. B. 404 Nicht gefunden oder 500 Interner Serverfehler. Sie enthรคlt den Statuscode und den Antworttext.
  • URLFehler Diese Ausnahme wird ausgelรถst, wenn der Server รผberhaupt nicht erreichbar ist, beispielsweise aufgrund eines falschen Domainnamens oder fehlender Internetverbindung. Sie enthรคlt ein Attribut namens โ€žreasonโ€œ, das den Fehler erklรคrt.

Weil HTTPError eine Unterklasse von URLFehler, fangen Sie immer zuerst HTTPError ab, damit jeder Fehlertyp separat behandelt wird:

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)

Durch die Behandlung dieser Ausnahmen wird ein Absturz Ihres Programms verhindert und Sie kรถnnen das Problem protokollieren, die Anfrage wiederholen oder auf zwischengespeicherte Daten zurรผckgreifen.

Wie man eine Datei von einem URL Verwendung von urllib

Ein ... Lesen URL Das Speichern im Arbeitsspeicher funktioniert fรผr kleine Seiten, aber fรผr Bilder, PDF-Dokumente oder Datensรคtze ist es einfacher, die Antwort direkt auf der Festplatte zu speichern. Das Modul urllib.request bietet zwei einfache Mรถglichkeiten hierfรผr.

Die Funktion urlretrieve() lรคdt eine URL herunter. URL direkt in eine lokale Datei in einer einzigen Zeile:

from urllib.request import urlretrieve

urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")

Fรผr mehr Kontrolle รถffnen Sie die URL und schreiben Sie die Bytes selbst. ร–ffnen Sie die lokale Datei im Binรคrmodus, da urlopen() Bytes und nicht Text zurรผckgibt:

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())

Bei sehr groรŸen Dateien sollten Sie in einer Schleife mit response.read(8192) lesen und schreiben, damit nie die gesamte Datei gleichzeitig im Speicher gehalten wird.

urllib vs. die requests-Bibliothek in Python

urllib ist Teil von Python Die Bibliothek ist standardmรครŸig integriert und funktioniert daher รผberall ohne Installation. Die Drittanbieterbibliothek โ€žrequestsโ€œ ist nicht standardmรครŸig enthalten, wird aber von vielen Entwicklern fรผr die alltรคgliche HTTP-Kommunikation bevorzugt, da ihre Syntax kรผrzer und besser lesbar ist.

Die Hauptunterschiede sind:

  • Installation: urllib wird mitgeliefert Python, wรคhrend requests mit pip installiert werden muss.
  • Dekodierung: urllib gibt rohe Bytes zurรผck, die Sie selbst dekodieren mรผssen, wรคhrend requests Text und JSON automatisch dekodiert.
  • Bequemlichkeit: requests verarbeitet Sitzungen, Cookies und benutzerdefinierte Header mit weniger Code.
  • Abhรคngigkeiten: urllib fรผgt keine hinzu, wรคhrend requests auf urllib3 basiert.

Wรคhlen Sie urllib, wenn Sie keine Abhรคngigkeiten benรถtigen oder nur eine kurze, einmalige Anfrage stellen mรถchten. Fรผr grรถรŸere Projekte mit Authentifizierung, Sitzungen oder hรคufigen API-Aufrufen empfiehlt sich requests. Beide Bibliotheken verwenden dieselben HTTP-Anfragen; die Entscheidung hรคngt also von der Bequemlichkeit oder einer kรผrzeren Liste an Abhรคngigkeiten ab.

Hรคufig gestellte Fragen

urlopen() gibt ein HTTP-Antwortobjekt zurรผck, รผblicherweise ein http.client.HTTPResponse. Mit read() erhalten Sie die Rohdaten (Bytes), mit getcode() den Statuscode und mit headers oder info() Metadaten wie Inhaltstyp und Lรคnge.

urllib2 gehรถrte zu Python 2. in Python 3. Es wurde reorganisiert: Seine Funktionen wurden in urllib.request zum ร–ffnen aufgeteilt. URLs und urllib.error fรผr Ausnahmen. Code Die fรผr urllib2 geschriebenen Dateien mรผssen aktualisiert werden, um stattdessen urllib.request zu importieren.

Die Funktion `read()` gibt Bytes und keinen String zurรผck, da `urlopen()` die Kodierung nicht kennt. Mit dem Aufruf von `decode("utf-8")` werden diese Bytes in lesbaren Text umgewandelt, sodass Sie den HTML- oder JSON-Inhalt drucken, durchsuchen oder analysieren kรถnnen.

ร–ffnen Sie den Microsoft Store auf Ihrem Windows-PC URL Mit `urlopen()` werden die Bytes gelesen, dekodiert und anschlieรŸend mit dem JSON-Modul geparst: `json.loads(response.read().decode(โ€œutf-8โ€))`. Dies gibt ein Ergebnis zurรผck. Python Wรถrterbuch oder Liste, die Sie direkt verwenden kรถnnen, was beim Aufruf von Web-APIs รผblich ist.

Wickeln Sie die URL Erstellen Sie ein `urllib.request.Request`-Objekt und fรผgen Sie vor dem ร–ffnen den Header hinzu: `request.add_header("User-Agent", "Mozilla/5.0")`. รœbergeben Sie die Anfrage anschlieรŸend an `urlopen()`. Benutzerdefinierte Header sind hilfreich, wenn ein Server die Standard-Header blockiert. Python Benutzeragent.

Ja. urllib kann Datensรคtze, CSV-Dateien und JSON von Web-APIs abrufen, die Sie anschlieรŸend dekodieren und in pandas oder NumPy laden kรถnnen. Es ist eine schlanke und unabhรคngige Methode, um Trainingsdaten in eine Machine-Learning-Pipeline einzubinden.

Ja. GitHub Copilot vervollstรคndigt hรคufige urllib-Muster wie urlopen()-Aufrufe, Request-Objekte und try/except-Fehlerbehandlung. Das beschleunigt die Erstellung von Boilerplate-Code, aber Sie sollten die Ergebnisse trotzdem รผberprรผfen. URLs, Header und Ausnahmebehandlung, die der KI-Assistent vorschlรคgt.

Kodieren Sie Ihre Parameter mit `urllib.parse.urlencode()`, konvertieren Sie sie mit `encode()` in Bytes und รผbergeben Sie sie anschlieรŸend als `data`-Argument an `urlopen()` oder ein `Request`-Objekt. Durch die Angabe von Daten sendet urllib automatisch eine POST- statt einer GET-Anfrage.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: