Télécharger sans effort des pages web et des fichiers avec Python et wget
Suciu Dan le 21 avril 2023

Êtes-vous fatigué de télécharger manuellement des pages web et des fichiers ? Souhaitez-vous qu'il y ait un moyen plus facile d'obtenir les données dont vous avez besoin ? Ne cherchez plus ! Dans cet article, je vais vous montrer comment utiliser Python et l'outil en ligne de commande wget pour automatiser le processus.
Dans cet article, vous découvrirez comment utiliser Python et wget pour automatiser le processus de téléchargement depuis le web, tout en découvrant les capacités et les limites de wget, ainsi que des outils alternatifs pour le web scraping.
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 cadres qui améliorent ses capacités.
Pourquoi wget ?
Wget est un outil de ligne de commande qui vous permet de télécharger des fichiers depuis l'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 uniques, des fichiers multiples et même des répertoires entiers.
Voici quelques-unes des principales fonctionnalités de wget :
- Télécharger des fichiers à partir d'Internet : Wget peut être utilisé pour télécharger des fichiers depuis l'internet, y compris 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 d'enregistrement du fichier, le nom du fichier et l'écrasement ou non des fichiers existants.
- Reprendre les téléchargements interrompus : Si un téléchargement est interrompu, wget peut le reprendre là où il s'est 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 peut prendre en charge différents types de protocoles Internet, notamment HTTP, HTTPS et FTP, ce qui en fait un outil polyvalent pour le téléchargement à partir de 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 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 d'économiser du temps et des efforts. Wget peut être personnalisé à l'aide de 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 y a 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 à partir d'Internet. Cela peut vous faire gagner du temps et de l'énergie, surtout 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 d'enregistrement du fichier, le nom du fichier et l'écrasement ou non des fichiers existants. En utilisant wget avec Python, vous pouvez définir ces options de manière programmatique et personnaliser vos téléchargements en fonction de vos besoins.
- Facilité d'utilisation : Python est connu 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 d'exploration du web 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 importants.
Pour commencer
Maintenant que nous avons discuté des avantages individuels et combinés de Python et de wget, passons à l'écriture du code.
Installation de wget
Assurez-vous que wget est installé sur votre ordinateur. Si votre système d'exploitation est Linux, vous l'avez déjà installé.
- Si vous utilisez Windows, vous pouvez télécharger le binaire à partir de cette page. Veillez à ajouter le chemin du binaire à la variable d'environnement PATH. Une autre option consiste à utiliser WSL (Windows Subsystem for Linux). Pour en savoir plus, cliquez ici.
- Si vous êtes un utilisateur Mac, installez wget à l'aide de brew
N'oubliez pas de consulter la documentation complète de wget ici.
Installation de Python
Procurez-vous la dernière version de Python sur le site officiel et suivez les instructions d'installation pour votre plateforme. Après l'installation, vous pouvez vérifier la version à l'aide de cette commande :
python3 --version
Exécution de commandes système en 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 à partir de vos scripts Python.
Pour utiliser le module `subprocess`, vous devez d'abord l'importer dans votre script Python. Ensuite, vous pouvez 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 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 lancer la commande ls, qui répertorie 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
None
Téléchargement avec wget
Télécharger un fichier
Commençons par télécharger le logo de WebScrapingAPI. Remplacez la liste des 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 renvoie le résultat suivant :
--2023-01-06 19:06:32-- https://www.webscrapingapi.com/images/logo/logo-white.svg
Résolvant www.webscrapingapi.com (www.webscrapingapi.com)... 76.76.21.61, 76.76.21.98
Connexion à www.webscrapingapi.com (www.webscrapingapi.com)|76.76.21.61|:443... connecté.
Requête HTTP envoyée, en attente de réponse... 200 OK
Longueur : 5391 (5.3K) [image/svg+xml]
Enregistrement dans : 'logo-white.svg'
logo-white.svg 100%[====================================================================================================================================================================>] 5.26K --.-KB/s en 0.06s
2023-01-06 19:06:33 (91.6 KB/s) - 'logo-white.svg' sauvegardé [5391/5391]
Aucun
Dans la sortie, nous pouvons voir comment `wget` résout le nom de domaine, se connecte au domaine, reçoit un code de réponse `200 OK`, trouve la longueur du fichier (5.3k) et commence à sauvegarder le fichier localement sous le nom `logo-white.svg`.
Vous pouvez vérifier le dossier du projet pour le fichier `logo-white.svg`.
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 presque le même, à la seule différence que le fichier est stocké dans le répertoire `./images/`.
Définition du nom du fichier téléchargé
En utilisant l'option `-O`, vous pouvez spécifier un nouveau nom pour le fichier téléchargé. Essayons-le :
result = subprocess.run(['wget', '-O', 'named-logo.svg', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Vérifiez dans le dossier du projet la présence du fichier `named-logo.svg`.
Télécharger le fichier si la version distante est plus récente
Vous pouvez utiliser le drapeau `-N` pour télécharger le fichier distant seulement si la version est plus récente que le fichier local. La commande ressemblera à ceci :
result = subprocess.run(['wget', '-N', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Interruption des téléchargements de curriculum vitae
Si un téléchargement est interrompu, `wget` peut le reprendre là où il s'est arrêté, économisant ainsi du temps et de la bande passante. Pour ce faire, vous devez utiliser le drapeau `-c`, qui indique à `wget` de continuer un téléchargement interrompu.
La commande se présente comme suit :
result = subprocess.run(['wget', '-c', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Si le téléchargement du fichier est terminé, vous pouvez voir le message suivant dans l'écran de sortie :
Requête HTTP envoyée, en attente de réponse... 416 La plage demandée n'est pas satisfaisante
Le fichier est déjà entièrement récupéré ; il n'y a rien à faire.
Recursive Télécharger
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 drapeaux `-r` et `-l` : le drapeau `-r` indique à l'outil de suivre les liens de manière récursive et le drapeau `-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 à"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 pas la solution ?
Il existe plusieurs situations dans lesquelles il serait plus approprié d'utiliser curl, Beautiful Soup ou Selenium au lieu de 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 lorsque vous interagissez avec des API ou accédez à des sites web protégés. `wget` n'a pas cette capacité.
- Lorsque vous avez besoin d'analyser et d'extraire des données d'un document 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 l'analyse et l'extraction de 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 de l'énergie.
Toutefois, 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 cherchez une alternative à wget pour le web scraping, envisagez d'utiliser WebScrapingAPI. WebScrapingAPI est un service professionnel de web scraping qui vous permet d'extraire facilement des données de sites web sans avoir à construire et à maintenir votre propre web scraper.
Il s'agit d'une solution rapide, fiable et rentable qui convient aux entreprises de toutes tailles.
Nouvelles et mises à jour
Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

Apprenez à récupérer des sites web dynamiques en JavaScript à l'aide de Scrapy et de Splash. De l'installation à l'écriture d'un spider, en passant par la gestion de la pagination et des réponses Splash, ce guide complet propose des instructions pas à pas pour les débutants comme pour les experts.


Commencez avec WebScrapingAPI, la solution ultime de web scraping ! Collectez des données en temps réel, contournez les systèmes anti-bots et bénéficiez d'une assistance professionnelle.


Découvrez comment extraire et organiser efficacement des données pour le web scraping et l'analyse de données grâce à l'analyse de données, aux bibliothèques d'analyse HTML et aux métadonnées schema.org.
