Essayez de gratter avec Python + Beautiful Soup

Objectif

Apprenez à gratter avec Python + Beautiful Soup.

Contexte

Je souhaite télécharger uniquement des images du site Web, J'ai facilement pensé que ce serait facile si je pouvais le gratter, mais c'était étonnamment difficile, alors j'écrirai ce que j'ai fait pour le moment.

Aperçu

Je voulais apprendre le scraping, donc je ne ferai pas de partie pour télécharger des images. Il utilise le logiciel gratuit Irvine du téléchargeur. Renumérotez également les fichiers image téléchargés avec les noms de fichiers numérotés et combinez-les dans un fichier Zip. Le flux est le suivant.

  1. Créez une liste d'URL d'images du site Web avec l'outil de création et copiez-la dans le presse-papiers
  2. Collez dans Irvine et téléchargez
  3. Renommez le fichier avec l'outil de création et compressez-le dans un fichier zip

Au fait, si vous utilisez correctement les fonctions d'Irvine, vous pouvez tout faire sans rien faire! Ne dis pas ça. Le but est d'apprendre le grattage.

Environnement et paramètres

Réalisé sous Windows 10. Si vous utilisez chocolatey, pour installer python3, démarrez cmd ou Windows PowerShell avec des privilèges d'administrateur et exécutez la commande suivante.

> choco install python

S'il y a des choix en cours de route, y + Entrez tout. Une fois l'installation terminée, rouvrez cmd ou PowerShell et exécutez la commande suivante.

> pip install requests
> pip install bs4
> pip install pyperclip

Téléchargez le code source (zip) depuis Git et décompressez-le. Le chemin développé est "Git / transing /". Téléchargez et installez Irvine et démarrez-le. image.png Créez un nouveau dossier "folder01" dans le dossier par défaut. image.png Le dossier nouvellement créé "folder01" est le script "HTML2imglist.py" Disons un chemin avec. image.png Vous pouvez le modifier ultérieurement en sélectionnant "Paramètres du dossier" dans le menu contextuel du "dossier01". image.png "Dossier 01" a été ajouté à Irvine. image.png Sélectionnez "Outils" - "Paramètres des options" dans le menu. Ouvrez l'onglet "Presse-papiers" et activez la case à cocher "S'inscrire directement depuis le presse-papiers". image.png Cliquez sur le bouton OK pour fermer. Sinon, vous devrez peut-être sélectionner «Gérer» - «Moniteur du Presse-papiers» dans le menu pour l'activer. À ma main, cela fonctionnait, qu'il soit activé ou désactivé.

Comment utiliser

L'explication visera le site Web, qui a des données ouvertes de la préfecture locale d'Ishikawa.

Ciblez les images miniatures suivantes de sites pittoresques. image.png

Si vous démarrez l'invite de commande (cmd) avec le chemin "Git / traning", déplacez le chemin vers "Git / traning / python / Web_scraping". Exécutez le script en spécifiant l'URL du site Web contenant l'image que vous souhaitez télécharger comme argument.

> cd .\python\Web_scraping
> python Html2imglist.py https://www.hot-ishikawa.jp/photo/

image.png Ensuite, le titre et la liste des URL de l'image sont copiés dans le presse-papiers. Démarrez Irvine et collez-le dans "folder01" pour démarrer le téléchargement, attendez qu'il se termine. image.png Si vous revenez à l'invite de commande et appuyez sur n'importe quelle touche, le fichier image téléchargé sera renommé sous le nom de fichier numéroté et combiné dans un fichier Zip. image.png ↑ "folder01.zip" est créé. image.png Si vous appuyez sur n'importe quelle touche, le dossier "folder01" sera vidé. Essayez de faire glisser et de déposer "folder01.zip" vers un logiciel de visualisation, tel que Image Viewer. image.png Il a été affiché en toute sécurité. Image Viewer passe à la diapositive suivante avec la touche → et à la diapositive précédente avec la touche ←.

Grattage

Affichez le code source du site ciblé "Téléchargement de matériel photo | Hot Ishikawa Tabi Net" et vérifiez la balise de titre. image.png L'exprimer avec un sélecteur CSS donne "html head title". Vérifiez également la structure des balises jusqu'au fichier image. image.png Le fichier que vous souhaitez télécharger a l'attribut src suivant.

Ligne 475:<img class="img-responsive" src="/photo/thumbnail/749/trim/1/1?v=0ca07195022078860363c009b75962f59c80bde5" alt="Kenrokuen">
~
Ligne 486:<img class="img-responsive" src="/photo/thumbnail/740/trim/1/1?v=f4145f658b274299f83a6038ef58f9b8d0cb5ac1" alt="Gare de Kanazawa">

La séquence des balises jusqu'à ce point est la suivante.

<html>
    <body>
        ~
        <div class="photoItems">
            <ul>
                <li>
                    <div class="photoItem">
                        <a>
                            <img src="1ère image cible">
                        </a>
                    </div>
                 </li>
                <li>
                    <div class="photoItem">
                        <a>
                            <img src="2ème image cible">
                        </a>
                    </div>
                 </li>

Les exprimer avec les sélecteurs CSS est "html body div .photoItems ul li div .photoItem a img". Un peu abrégé en "html body div .photoItem img".

Étant donné que la façon dont ce fichier image est décrit varie en fonction du site Web, il peut être spécifié avec les variables suivantes dans le fichier HTML2imglist.py.

Ligne 50: titre_css_select = 'html head title'
Ligne 51: img_css_select = 'html body div .photoItem img'
Ligne 52: img_attr = 'src'

en conclusion

Je pensais que le sélecteur CSS se grattait. Dans cet esprit, cet article n'a rien appris sur le grattage, mais ce doit être un blâme.

Liens connexes

Site ciblé

référence

Recommended Posts

Essayez de gratter avec Python + Beautiful Soup
Grattage avec Python et belle soupe
Essayez de gratter avec Python.
Gratter avec une belle soupe
Grattage de table avec belle soupe
Grattage avec Python
Racler plusieurs pages avec Beautiful Soup
Grattage avec Python
Gratter avec une belle soupe en 10 minutes
Grattage de site Web avec Beautiful Soup en Python
Essayez le scraping HTML avec la bibliothèque Python
[Python] Gratter une table avec Beautiful Soup
[Pour les débutants] Essayez le web scraping avec Python
Grattage en Python (préparation)
Grattage avec Python + PhantomJS
Ma belle soupe (Python)
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Scraping RSS avec Python
Écrivez un "bot" de scraping web sans tête de base en Python avec Beautiful Soup 4
J'ai essayé de gratter avec Python
Web scraping avec python + JupyterLab
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Essayez la sortie Python avec Haxe 3.2
Grattage avec du sélénium en Python
Grattage avec Tor en Python
Scraping prévisions météorologiques avec python
Essayez d'exécuter Python avec Try Jupyter
Grattage avec Selenium + Python Partie 2
Essayez la reconnaissance faciale avec Python
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Pratique de l'exploration avec Beautiful Soup
[Python] Supprimer en spécifiant une balise avec Beautiful Soup
Essayez de gratter les données COVID-19 Tokyo avec Python
Belle soupe
Scraping avec Node, Ruby et Python
Scraping avec Selenium en Python (Basic)
Grattage avec Python, Selenium et Chromedriver
Essayez d'exploiter Facebook avec Python
[Python] Un mémorandum de belle soupe4
Essayez la décomposition de valeurs singulières avec Python
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Essayez Python
[Scraping] Scraping Python
Faisons du scraping d'images avec Python
Essayez la reconnaissance faciale avec python + OpenCV
Gratter les résultats de recherche de Google Actualités en Python (2) Utiliser Beautiful Soup
Obtenez les tendances Qiita avec le scraping Python
J'ai essayé différentes choses avec Python: le grattage (Beautiful Soup + Selenium + PhantomJS) et l'analyse morphologique
Essayez la simulation de contrôle de fréquence avec Python
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Obtenez des informations météorologiques avec Python et le grattage
Obtenez des informations sur la propriété en grattant avec python