Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-04 03:04:01
original
1038 Les gens l'ont consulté

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

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

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

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

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

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