Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lade ich in Python 3 Dateien aus dem Web herunter?

Wie lade ich in Python 3 Dateien aus dem Web herunter?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 03:53:01796Durchsuche

How to Download Files from the Web in Python 3?

Dateien aus dem Web in Python 3 herunterladen

Einführung

Beim Erstellen von Programmen, die mit dem Internet interagieren, ist es oft notwendig, Dateien herunterzuladen von einem Webserver. In Python 3 gibt es mehrere Möglichkeiten, diese Aufgabe zu erfüllen.

Python 3-Lösung

Der ursprünglich bereitgestellte Code stößt auf einen Fehler, da die Funktion einen Bytetyp für das URL-Argument erwartet, der jedoch extrahiert wird Die URL aus der JAD-Datei ist eine Zeichenfolge. Um eine Datei herunterzuladen, wenn die URL als Zeichenfolge gespeichert ist, konvertieren Sie sie mithilfe der UTF-8-Kodierung in einen Bytetyp:

<code class="python">import urllib.request

def downloadFile(URL=None):
    h = urllib.request.urlopen(URL.encode('utf-8'))
    return h.read()

downloadFile(URL_from_file)</code>

Alternative Lösungen:

Es gibt mehrere alternative Methoden dazu Dateien aus dem Internet herunterladen:

  • urllib.request.urlopen: Erhalten Sie den Inhalt einer Webseite, indem Sie die Antwort von urlopen lesen:

    <code class="python">response = urllib.request.urlopen(URL)
    data = response.read() # a `bytes` object
    text = data.decode('utf-8') # a `str`</code>
  • urllib.request.urlretrieve: Laden Sie eine Datei herunter und speichern Sie sie lokal:

    <code class="python">urllib.request.urlretrieve(URL, file_name)</code>
  • urllib.request. urlopen Shutil.copyfileobj: Bieten Sie einen sehr empfehlenswerten und korrektesten Ansatz zum Herunterladen von Dateien an:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      shutil.copyfileobj(response, out_file)</code>
  • urllib.request.urlopen write to bytes object: Einfachere Option, aber nur für kleine Dateien empfohlen:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      data = response.read() # a `bytes` object
      out_file.write(data)</code>

Verarbeitung komprimierter Daten

Schließlich ist auch die Extraktion komprimierter Daten im laufenden Betrieb möglich möglich:

<code class="python">url = 'http://example.com/something.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object</code>

Das obige ist der detaillierte Inhalt vonWie lade ich in Python 3 Dateien aus dem Web herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn