Maison  >  Article  >  développement back-end  >  Comment télécharger des fichiers depuis le Web à l’aide de Python 3 ?

Comment télécharger des fichiers depuis le Web à l’aide de Python 3 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 03:04:01954parcourir

How to Download Files from the Web Using Python 3?

Téléchargement de fichiers depuis le Web dans Python 3

Lors de l'extraction des URL des fichiers JAD pour télécharger des fichiers JAR, nous rencontrons une erreur due au fait que l'URL est stockée sous forme de chaîne taper. Pour résoudre ce problème, nous explorons les méthodes permettant de télécharger des fichiers avec des URL de chaîne dans Python 3.

Récupération du contenu d'une page Web :

Pour récupérer le contenu d'une page Web dans une variable, nous pouvons utiliser urllib.request.urlopen et lire la réponse :

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

url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()      # bytes object
text = data.decode('utf-8') # str object</code>

Téléchargement et enregistrement de fichiers :

Pour des téléchargements et des enregistrements simples de fichiers, urllib .request.urlretrieve est optimal :

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

# Download and save file from url to file_name
urllib.request.urlretrieve(url, file_name)</code>

Vous pouvez également obtenir le chemin local et les en-têtes de réponse :

<code class="python">file_name, headers = urllib.request.urlretrieve(url)</code>

Solution optimale en utilisant urlopen etshuil.copyfileobj :

L'approche recommandée consiste à utiliser urllib.request.urlopen pour récupérer un objet de réponse HTTP de type fichier et à le copier dans un fichier à l'aide deshuil.copyfileobj :

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

# Download and save file from url to file_name
with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file:
    shutil.copyfileobj(response, out_file)</code>

Approche alternative pour les petits fichiers :

Pour les fichiers plus petits, il est possible de stocker l'intégralité du téléchargement dans un objet bytes et de l'écrire dans un fichier :

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

# Download and save file from url to file_name
with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file:
    data = response.read() # bytes object
    out_file.write(data)</code>

Extraction de données compressées à la volée :

Vous pouvez également extraire des données compressées à la volée si le serveur HTTP prend en charge l'accès aléatoire aux fichiers :

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

# Read first 64 bytes of .gz file at url
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) # bytes object</code>

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!

Déclaration:
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