Comment télécharger toutes les images à partir d’une page Web en Python

Apprenez à extraire et télécharger des images d’une seule page web en Python en utilisant les requêtes et les bibliothèques BeautifulSoup.

Avez-vous déjà voulu télécharger toutes les images sur une certaine page web ? Dans ce tutoriel, vous apprendrez comment vous pouvez construire un racleur Python qui récupère toutes les images d’une page web étant donné son URL et les télécharge à l’aide de requêtes et de bibliothèques BeautifulSoup.

Pour commencer, nous avons besoin d’un certain nombre de dépendances, installons-les:

Ouvrir un nouveau fichier Python et importer les modules nécessaires:

Tout d’abord, faisons un validateur d’URL, qui s’assure que l’URL passée est valide, car il y a des sites web qui mettent des données encodées à la place d’une URL, donc nous devons sauter ceux-ci:

urlparse() fonction analyse une URL en six composantes, il suffit de voir si le netloc (nom de domaine) et le schéma (protocole) sont là.

Deuxièmement, je vais écrire la fonction centrale qui saisit toutes les URL d’image d’une page web :

Le contenu HTML de la page web est en soupobjet, pour extraire toutes les étiquettes img dans HTML, nous devons utiliser soup.find_all("img")Méthode, voyons-le en action:

Cela permettra de récupérer tous les éléments d’image sous la liste Python

Je l’ai enveloppé dans un objet tqdm juste pour imprimer une barre de progression. Pour saisir l’URL d’une balise img, il y a un attribut src. Cependant, il y a certaines étiquettes qui ne contiennent pas l’attribut src, nous les sautons en utilisant la mention continue ci-dessus.

Maintenant, nous devons nous assurer que l’URL est absolue :

Il y a des URL qui contiennent des paires de valeur de clé HTTP GET que nous n’aimons pas (cela se termine par quelque chose comme « /image.png?c.c.

Nous obtenons la position du caractère ‘?’, puis enlever tout après, s’il n’y en a pas, il va augmenter ValueError, c’est pourquoi je l’ai enveloppé dans le but/sauf le bloc (bien sûr, vous pouvez l’implémenter d’une meilleure manière, si oui, s’il vous plaît, partagez-le avec nous dans les commentaires ci-dessous).

Maintenant, assurons-nous que chaque URL est valide et retourne toutes les URL de l’image:

Maintenant que nous avons une fonction qui saisit toutes les URL d’image, nous avons besoin d’une fonction pour télécharger des fichiers à partir du web avec Python, j’ai apporté la fonction suivante de ce tutoriel :

La fonction ci-dessus amène essentiellement l’url de fichier à télécharger et le nom de chemin du dossier pour enregistrer ce fichier.

Enfin, voici la fonction principale:

Obtenir toutes les URL d’images à partir de cette page et les télécharger chacune une par une. Testons ceci :

Cela permettra de télécharger toutes les images de cette URL et les stockera dans le dossier « yandex-images » qui sera créé automatiquement.

Remarquez cependant, il y a des sites web qui chargent leurs données en utilisant Javascript, dans ce cas, vous devriez utiliser request bibliothèque.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *