[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup

introduction

Ici, nous allons vous présenter "Comment enregistrer des images sur le Web à la fois" par Web scraping.

: avertissement: Attention: avertissement: S'il est protégé par le droit d'auteur ou s'il est OK mais que le grattage est interdit par les conditions d'utilisation, il existe une possibilité de réclamer des dommages-intérêts, veuillez donc comprendre la loi sur le droit d'auteur et les conditions d'utilisation sur le Web Raclons.

table des matières

  1. [Comment faire du web scraping](# 1-Comment faire du web scraping)
  2. [En fait, enregistrez l'image](# 2-En fait, enregistrez l'image)
  3. [Flux d'extraction](# 3-Flux d'extraction)
  4. [Résumé](# 4-Résumé)
  5. [Bonus](# 5-Bonus)
  6. [Référence](# 6-Référence)

1. Comment faire du web scraping

Le scraping Web peut être fait dans différents langages tels que "Ruby", "PHP" et "Javascript", mais cette fois nous allons introduire la méthode en utilisant "Beautiful Soup" de Python.

2. En fait, enregistrez l'image

① Installez beautifulsoup4 avec pip

pip install beautifulsoup4

② Décidez du site pour effectuer le web scraping

③ Obtenez l'URL de chaque page de lien d'image à partir de la page de liste

url = "https://www.irasutoya.com/search/label/%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9"
#Préparez une liste pour stocker l'URL de la page d'image
link_list = []
response = urllib.request.urlopen(url)
soup = BeautifulSoup(response, "html.parser")
#Obtenir toutes les balises de lien d'image
image_list = soup.select('div.boxmeta.clearfix > h2 > a')
#Extraire les liens d'image un par un
for image_link in image_list:
    link_url = image_link.attrs['href']
    link_list.append(link_url)

④ Obtenez toutes les balises du fichier image

for page_url in link_list:
    page_html = urllib.request.urlopen(page_url)
    page_soup = BeautifulSoup(page_html, "html.parser")
    #Obtenir toutes les balises pour les fichiers image
    img_list = page_soup.select('div.separator > a > img')

⑤ Retirez les balises img une par une et obtenez l'URL du fichier image.

for img in img_list:
    #Obtenez l'URL du fichier image
    img_url = (img.attrs['src'])
    file_name = re.search(".*/(.*png|.*jpg)$", img_url)
    save_path = output_folder.joinpath(file_name.group(1))

⑥ Téléchargez les données depuis l'URL du fichier image

try:
   #Obtenir des données à partir de l'URL du fichier image
   image = requests.get(img_url)
   #Enregistrer les données dans le chemin du fichier de destination
   open(save_path, 'wb').write(image.content)
   #Afficher le nom du fichier enregistré
   print(save_path)
except ValueError:
   print("ValueError!")

C'est tout pour la procédure.

↓ ↓ Résultat de l'exécution ↓ ↓ result1.png

3. Flux d'extraction

J'ai pensé qu'il était un peu difficile d'imaginer les étapes ③ à ⑤, j'ai donc créé un flux d'extraction grossier. process.png

De plus, la source de cette heure est également publiée sur Github, veuillez donc vous y référer à partir de ce qui suit. https://github.com/miyazakikna/SaveLocalImageWebScraping.git

4. Résumé

Ici, j'ai expliqué comment enregistrer des images en vrac en utilisant Beatiful Soup of Python. J'ai eu l'image d'Irasutoya cette fois, mais je pense que vous pouvez télécharger l'image de la même manière sur d'autres sites, veuillez donc l'utiliser.

5. Bonus

Cliquez ici pour savoir comment changer le nom du fichier à la fois après le téléchargement de l'image ↓ ↓ [[Efficacité du travail] Comment changer les noms de fichiers par lots avec Python] (https://qiita.com/miyazakikna/items/b9c6d6d83ebcd529afd7)

6. Référence

Grattons des images avec PythonCollection d'images par web scraping

Recommended Posts

[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
Téléchargez les images du drapeau de Wikipédia en une seule fois [Python] [Beautiful Soup]
Convertir un mémo à la fois avec Python 2to3
Télécharger des fichiers sur le Web avec Python
Comment enregistrer toutes les photos Instagram à la fois
Stratégie sur la façon de monétiser avec Python Java
Introduction à Python avec Atom (en route)
Réfléchissez à la programmation de Python sur votre iPad
[Introduction à Python] Comment itérer avec la fonction range?
[Python] Comment spécifier l'emplacement de téléchargement avec youtube-dl
[Python] Comment réécrire le style de table avec python-pptx [python-pptx]
Comment profiter de Python sur Android !! Programmation en déplacement !!
J'ai essayé de simuler la propagation de l'infection avec Python
Comment installer Python2.7 python3.5 avec pyenv (sur RHEL5 CentOS5) (novembre 2016)
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
[Ev3dev] Comment afficher une image bmp sur un écran LCD avec python
[Part.2] Exploration avec Python! Cliquez sur la page Web pour vous déplacer!
Comment gratter en quelques secondes avec le sélénium de Python
Comment entrer dans l'environnement de développement Python avec Vagrant
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Comment gérer le phénomène que Python (notebook Jupyter) exécuté sur WSL devient abandonné
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
Python: comment utiliser async avec
Comment collecter des images en Python
Grattage avec Python et belle soupe
Comment obtenir la version Python
Comment démarrer avec Python
Comment calculer la date avec python
Comment est le progrès? Continuons le boom ?? en Python
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Pour utiliser python, mettez pyenv sur macOS avec PyCall
[Python] Explique comment utiliser la fonction format avec un exemple
Comment mettre à jour la version Python de Cloud Shell dans GCP
Comment envoyer une requête à l'API DMM (FANZA) avec python
Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python
J'ai été surpris de savoir comment enregistrer des objets avec python, qui est léger et très économe en énergie.
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
Le 16ème problème d'écriture en temps réel hors ligne a été résolu avec Python
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Comment exécuter le code pratique du livre "Making Profitable AI with Python" sur Google Colaboratory
Comment lire pydoc sur l'interpréteur python
[Python3] Comprendre les bases de Beautiful Soup
Comment couper la partie inférieure droite de l'image avec Python OpenCV
[Kivy] Comment installer Kivy sur Windows [Python]
[Python] Explique comment utiliser la fonction range avec un exemple concret
Le 16ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Comment obtenir la différence de date et d'heure en secondes avec Python
Ajouter un intervalle de confiance de 95% des deux côtés pour la figure avec Python / Matplotlib
Utilisez python sur Raspberry Pi 3 pour éclairer la LED avec le contrôle du commutateur!
Comment utiliser BigQuery en Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Fonction pour enregistrer les images par date [python3]
Comment effacer Python 2.x sur Mac.
Paramètres lors de l'utilisation de requêtes Python 3 et de Beautiful Soup avec crostini sur Chromebook
Comment faire un test de sac avec python
Comment afficher le japonais python avec lolipop