Pourquoi Python ?
Python est un langage de programmation puissant et populaire utilisé dans divers domaines, tels que l'automatisation, la science des données et le développement d'applications. Il est facile à apprendre et dispose d'une vaste bibliothèque de modules et de frameworks qui enrichissent ses capacités.
Pourquoi wget ?
Wget est un outil en ligne de commande qui vous permet de télécharger des fichiers depuis Internet. Il est largement disponible sur la plupart des systèmes de type Unix, y compris Linux et macOS. Wget est un outil polyvalent qui peut être utilisé pour télécharger des fichiers individuels, plusieurs fichiers et même des répertoires entiers.
Voici quelques-unes des principales fonctionnalités de wget :
- Téléchargement de fichiers depuis Internet : Wget peut être utilisé pour télécharger des fichiers depuis Internet, notamment des pages web, des images et d'autres types de fichiers.
- Options de téléchargement personnalisables : Wget vous permet de spécifier diverses options pour personnaliser vos téléchargements, telles que le répertoire dans lequel enregistrer le fichier, le nom du fichier et le choix de remplacer ou non les fichiers existants.
- Reprise des téléchargements interrompus : si un téléchargement est interrompu, wget peut le reprendre là où il s'était arrêté, ce qui permet d'économiser du temps et de la bande passante.
- Téléchargement récursif : wget peut être utilisé pour télécharger un site web ou un répertoire entier en suivant les liens de manière récursive.
- Prise en charge des protocoles HTTP, HTTPS et FTP : Wget prend en charge divers types de protocoles Internet, notamment HTTP, HTTPS et FTP, ce qui en fait un outil polyvalent pour télécharger depuis différents types de serveurs.
- Disponible sur la plupart des systèmes de type Unix : wget est largement disponible sur la plupart des systèmes de type Unix, y compris Linux et macOS, ce qui le rend facile à utiliser sur une grande variété de plateformes.
Pourquoi utiliser wget avec Python ?
Python et wget peuvent être combinés pour automatiser le processus de téléchargement de pages web et de fichiers, ce qui permet de gagner du temps et de réduire les efforts. Wget peut être personnalisé via Python, et les tâches de web scraping ou de téléchargement de fichiers peuvent être intégrées dans des scripts Python existants.
Il existe plusieurs raisons pour lesquelles on peut choisir d'utiliser wget avec Python :
- Automatisation : en utilisant wget avec Python, vous pouvez automatiser le processus de téléchargement de fichiers depuis Internet. Cela permet de gagner du temps et de réduire les efforts, en particulier si vous devez télécharger un grand nombre de fichiers ou de sites web.
- Personnalisation : Wget vous permet de spécifier diverses options pour personnaliser vos téléchargements, telles que le répertoire dans lequel enregistrer le fichier, le nom du fichier et le choix de remplacer ou non les fichiers existants. En utilisant wget avec Python, vous pouvez définir ces options par programmation et personnaliser vos téléchargements en fonction de vos besoins.
- Facilité d'utilisation : Python est réputé pour sa simplicité et sa lisibilité, ce qui en fait un langage facile à apprendre et à utiliser. En utilisant wget avec Python, vous pouvez tirer parti de la puissance de Python pour faciliter les tâches de web scraping et de téléchargement de fichiers.
- Évolutivité : Python est un langage évolutif capable de traiter de grandes quantités de données. En utilisant wget avec Python, vous pouvez faire évoluer vos tâches de web scraping ou de téléchargement de fichiers pour traiter des ensembles de données plus volumineux.
Pour commencer
Maintenant que nous avons abordé les avantages individuels et combinés de Python et de wget, passons à la partie écriture de code.
Installation de wget
Assurez-vous que wget est installé sur votre ordinateur. Si vous utilisez Linux, il est déjà installé.
- Si vous utilisez Windows, vous pouvez télécharger le fichier binaire depuis cette page. Assurez-vous d'ajouter le chemin d'accès au fichier binaire à la variable d'environnement PATH. Une autre option consiste à utiliser WSL (Windows Subsystem for Linux). Pour en savoir plus, cliquez ici.
- Si vous utilisez un Mac, installez wget à l'aide de brew
N'oubliez pas de consulter la documentation complète de wget ici.
Installation de Python
Téléchargez la dernière version de Python depuis le site officiel et suivez les instructions d'installation correspondant à votre plateforme. Une fois l'installation terminée, vous pouvez vérifier la version à l'aide de cette commande :
python3 --versionExécuter des commandes système dans Python
Le module `subprocess` de Python vous permet d'exécuter des commandes système et de capturer leur sortie. C'est un moyen puissant et flexible d'interagir avec le système d'exploitation depuis vos scripts Python.
Pour utiliser le module `subprocess`, vous devez d'abord l'importer dans votre script Python. Vous pouvez ensuite utiliser la fonction `subprocess.run()` pour exécuter une commande système et capturer sa sortie.
La fonction `run()` prend la commande à exécuter sous forme de chaîne de caractères et renvoie un objet `CompletedProcess`, qui contient le code de sortie, stdout et stderr de la commande.
Voici un exemple d'utilisation de la fonction `subprocess.run()` pour exécuter la commande ls, qui liste les fichiers d'un répertoire :
import subprocess
result = subprocess.run(['ls', '-l'])
print(result.stdout)
Exécutez ce code avec la commande python3 main.py. Le résultat devrait ressembler à ceci.
total 4
-rw-r--r-- 1 dan dan 80 Jan 6 18:58 main.py
NoneTéléchargement avec wget
Télécharger un fichier
Commençons par télécharger le logo de WebScrapingAPI. Remplacez la liste d'arguments par `wget` et l'URL du logo. La commande ressemblera à ceci :
result = subprocess.run(['wget', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Le script renverra le résultat suivant :
--2023-01-06 19:06:32-- https://www.webscrapingapi.com/images/logo/logo-white.svg
Resolving www.webscrapingapi.com (www.webscrapingapi.com)... 76.76.21.61, 76.76.21.98
Connecting to www.webscrapingapi.com (www.webscrapingapi.com)|76.76.21.61|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5391 (5.3K) [image/svg+xml]
Saving to: 'logo-white.svg'
logo-white.svg 100%[====================================================================================================================================================================>] 5.26K --.-KB/s in 0.06s
2023-01-06 19:06:33 (91.6 KB/s) - 'logo-white.svg' saved [5391/5391]
None
À partir de ce résultat, nous pouvons voir comment `wget` résout le nom de domaine, se connecte au domaine, reçoit un code de réponse `200 OK`, détermine la taille du fichier (5,3 ko) et commence à enregistrer le fichier localement sous le nom `logo-white.svg`.
Vous pouvez vérifier la présence du fichier `logo-white.svg` dans le dossier du projet.
Téléchargement dans un répertoire
Vous pouvez télécharger le fichier dans un répertoire personnalisé en utilisant l'option `-P`. Mettons à jour le script et exécutons-le pour voir les résultats :
result = subprocess.run(['wget', '-P', 'images', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Le résultat est pratiquement identique, la seule différence étant que le fichier est stocké dans le répertoire `./images/`.
Définition du nom du fichier téléchargé
À l'aide de l'option `-O`, vous pouvez spécifier un nouveau nom pour le fichier téléchargé. Essayons :
result = subprocess.run(['wget', '-O', 'named-logo.svg', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Vérifiez dans le dossier du projet si le fichier `named-logo.svg` s'y trouve.
Télécharger le fichier si la version distante est plus récente
Vous pouvez utiliser l'option `-N` pour télécharger le fichier distant uniquement si sa version est plus récente que celle du fichier local. La commande ressemblera à ceci :
result = subprocess.run(['wget', '-N', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])Reprendre les téléchargements interrompus
Si un téléchargement est interrompu, `wget` peut le reprendre là où il s'était arrêté, ce qui permet d'économiser du temps et de la bande passante. Pour ce faire, vous devez utiliser l'option `-c`, qui indique à `wget` de poursuivre un téléchargement interrompu.
La commande ressemblera à ceci :
result = subprocess.run(['wget', '-c', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Si le téléchargement du fichier est terminé, vous verrez s'afficher le message suivant :
HTTP request sent, awaiting response... 416 Requested Range Not Satisfiable
The file is already fully retrieved; nothing to do.Téléchargement récursif
Wget peut être utilisé pour télécharger un site web ou un répertoire entier en suivant les liens de manière récursive. Pour ce faire, vous devez utiliser les options `-r` et `-l` : l'option `-r` indique à l'outil de suivre les liens de manière récursive et l'option `-l` spécifie la profondeur maximale de la récursion.
result = subprocess.run(['wget', '-r', '-l', '2', 'https://www.webscrapingapi.com'])
Cette commande téléchargera le site web à l'adresse « https://www.webscrapingapi.com » et suivra les liens vers d'autres pages du même site web jusqu'à une profondeur maximale de 2.
Quand wget n'est-il pas la solution ?
Il existe plusieurs situations où il peut être plus approprié d'utiliser curl, Beautiful Soup ou Selenium plutôt que wget :
- Lorsque vous devez définir des en-têtes HTTP ou des cookies : Curl vous permet de définir des en-têtes HTTP et des cookies, ce qui peut être utile lors de l'interaction avec des API ou de l'accès à des sites web protégés. `wget` ne dispose pas de cette fonctionnalité.
- Lorsque vous devez analyser et extraire des données à partir de HTML : Beautiful Soup est une bibliothèque Python qui facilite l'analyse et l'extraction de données à partir de documents HTML. wget n'est pas conçu pour analyser et extraire des données à partir de pages web.
- Lorsque vous devez interagir avec un site web en tant qu'utilisateur : Selenium est un outil qui vous permet d'automatiser le processus d'interaction avec un site web en tant qu'utilisateur. Il peut être utilisé pour remplir des formulaires, cliquer sur des boutons et effectuer d'autres actions qui ne sont pas possibles avec wget.
Conclusions
Python et wget sont des outils puissants pour automatiser le processus de téléchargement de fichiers et de pages web. En utilisant wget avec Python, vous pouvez personnaliser vos téléchargements, intégrer des tâches de web scraping ou de téléchargement de fichiers dans vos scripts Python existants, et gagner du temps et des efforts.
Cependant, il est important de respecter les conditions d'utilisation des sites web à partir desquels vous effectuez des téléchargements et d'éviter de surcharger les serveurs.
Si vous recherchez une alternative à wget pour le web scraping, pensez à utiliser WebScrapingAPI. WebScrapingAPI est un service professionnel de web scraping qui vous permet d'extraire facilement des données de sites web sans avoir à créer et à maintenir votre propre outil de web scraping.
C'est une solution rapide, fiable et économique qui convient aux entreprises de toutes tailles.




