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: