Introduction
Ce tutoriel montre comment lister et télécharger tous les fichiers d’un répertoire public accessible via URL — par exemple, lorsqu’un collègue partage un répertoire web comme https://******/pub/ contenant plusieurs fichiers.
Nous allons nous concentrer sur le téléchargement de tous les fichiers se terminant par .nc (fichiers NetCDF), mais vous pouvez adapter la méthode pour n’importe quel type de fichier.
Télécharger des fichiers depuis un répertoire URL
Imaginez qu’un collègue vous envoie un lien vers un répertoire web — par exemple :
1 | https://******/pub/ |
Lorsque vous l’ouvrez dans votre navigateur, vous voyez une liste de fichiers (voir image ci-dessous).
Votre objectif est de lister automatiquement et télécharger tous les fichiers se terminant par .nc avec Python.

.nc d’un répertoire URL avec Python.
Étape 1 — Lister tous les fichiers du répertoire URL
La première étape consiste à récupérer le contenu HTML de la page du répertoire.
Vous pouvez le faire facilement avec la bibliothèque requests :
1 2 3 4 | import requests url = 'https://******/pub/' page = requests.get(url).text |
Ensuite, vous devez extraire tous les liens vers les fichiers depuis la page.
Une méthode simple et efficace consiste à utiliser BeautifulSoup :
1 2 3 4 5 6 7 8 9 10 | from bs4 import BeautifulSoup soup = BeautifulSoup(page, 'html.parser') # Filtrer uniquement les fichiers se terminant par ".nc" links = [url + node.get('href') for node in soup.find_all('a') if node.get('href').endswith('.nc')] print("Fichiers trouvés :") for link in links: print(link) |
Cela vous donnera une liste des URLs complètes de tous les fichiers .nc présents dans le répertoire.
Étape 2 — Télécharger tous les fichiers localement
Une fois que vous avez la liste des liens, vous pouvez télécharger chaque fichier avec urllib.request.urlretrieve :
1 2 3 4 5 6 7 8 | import urllib.request for link in links: filename = link.split('/')[-1] print(f"Téléchargement : {filename}") urllib.request.urlretrieve(link, filename) print("✅ Téléchargement terminé !") |
Ce script va :
- Extraire le nom du fichier depuis chaque URL.
- Télécharger chaque fichier et l’enregistrer localement dans le répertoire courant.
Améliorations optionnelles
Ajouter une barre de progression avec tqdm :
1 2 3 4 5 | from tqdm import tqdm for link in tqdm(links, desc="Téléchargement des fichiers"): filename = link.split('/')[-1] urllib.request.urlretrieve(link, filename) |
Gérer les erreurs de manière sécurisée :
1 2 3 4 | try: urllib.request.urlretrieve(link, filename) except Exception as e: print(f"❌ Échec du téléchargement de {filename} : {e}") |
Changer le répertoire de sortie :
1 2 3 4 5 6 7 8 | import os output_dir = "downloads" os.makedirs(output_dir, exist_ok=True) for link in links: filename = os.path.join(output_dir, link.split('/')[-1]) urllib.request.urlretrieve(link, filename) |
Voir aussi
| Liens | Tags |
|---|---|
| Comment télécharger un fichier (PDF, texte, …) depuis une URL avec Python ? | Python; urlretrieve |
| Comment télécharger un fichier PDF depuis son URL avec Python ? | Python; urlretrieve |
Références
| Liens | Site |
|---|---|
| Requests — Documentation officielle | requests.readthedocs.io |
| BeautifulSoup — Documentation officielle | crummy.com |
urllib.request — Bibliothèque standard Python |
docs.python.org |
tqdm — Barre de progression pour Python |
tqdm.github.io |
