Comment télécharger des fichiers depuis le Web dans Python 3 ?

Mary-Kate Olsen
Libérer: 2024-11-04 03:53:01
original
794 Les gens l'ont consulté

How to Download Files from the Web in Python 3?

Téléchargement de fichiers à partir du Web dans Python 3

Introduction

Lors de la création de programmes qui interagissent avec Internet, il est souvent nécessaire de télécharger des fichiers à partir d'un serveur Web. Dans Python 3, il existe plusieurs façons d'accomplir cette tâche.

Solution Python 3

Le code initialement fourni rencontre une erreur car la fonction attend un type d'octet pour l'argument URL, mais le code extrait L'URL du fichier JAD est une chaîne. Pour télécharger un fichier lorsque l'URL est stockée sous forme de chaîne, convertissez-le en type d'octet à l'aide de l'encodage UTF-8 :

<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>
Copier après la connexion

Solutions alternatives :

Il existe plusieurs méthodes alternatives pour télécharger des fichiers depuis le web :

  • urllib.request.urlopen : Obtenez le contenu d'une page web en lisant la réponse d'urlopen :

    <code class="python">response = urllib.request.urlopen(URL)
    data = response.read() # a `bytes` object
    text = data.decode('utf-8') # a `str`</code>
    Copier après la connexion
  • urllib.request.urlretrieve : Téléchargez et enregistrez un fichier localement :

    <code class="python">urllib.request.urlretrieve(URL, file_name)</code>
    Copier après la connexion
  • urllib.request. urlopenshutil.copyfileobj : Offre une approche hautement recommandée et la plus correcte pour le téléchargement de fichiers :

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      shutil.copyfileobj(response, out_file)</code>
    Copier après la connexion
  • urllib.request.urlopen écrire dans l'objet bytes : Option plus simple, mais recommandée uniquement pour les petits fichiers :

    <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>
    Copier après la connexion

Gestion des données compressées

Enfin, l'extraction des données compressées à la volée est également possible :

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!