[PYTHON] Télécharger automatiquement des images avec grattage

Vive le bon travail. @ibusan. Cette fois, comme le titre l'indique, nous avons implémenté un programme qui télécharge automatiquement les images par grattage. Je le laisserai dans l'article sous forme de mémorandum afin de pouvoir regarder en arrière quand je l'oublierai.

Aperçu

Il existe différentes cibles pour le scraping, mais cette fois, le Fan Kit du jeu "Princess Connect! Re: Dive" auquel je suis accro. Je souhaite collecter automatiquement /). C'est beaucoup à faire à la main, n'est-ce pas?

Préparation

Tout d'abord, préparez l'environnement pour le grattage. L'environnement construit cette fois est le suivant.

  1. Anaconda
  2. ChromDriver

Anaconda est une plate-forme qui fournit des packages Python pour la science des données. Vous pouvez l'installer à partir du lien ci-dessus. ChromDriver est un pilote requis pour le fonctionnement automatique de Chrom par programmation. Si Anaconda est installé

pip install chromedriver-binary=='Version du pilote'

Vous pouvez l'installer avec. Le site suivant sera utile pour installer Chrom Driver. Procédure d'installation du pilote Chrom

La bibliothèque à utiliser est la suivante. Tous peuvent être installés avec pip.

  1. selenium
  2. BeutifulSoup
  3. requests
  4. os
  5. time

politique

Cette fois, nous procéderons à la mise en œuvre selon la procédure suivante.

  1. Obtenez l'URL de toutes les pages (1 page commune, 2 pages) de page Fankit
  2. Obtenez toutes les URL des kits de fans pour chaque page Allez sur l'URL obtenue en 3.2 et téléchargez le fan kit

codage

Maintenant que la politique a été décidée, nous pouvons commencer à coder.

from selenium import webdriver
import time
import os
from bs4 import BeautifulSoup
import requests

Tout d'abord, importez la bibliothèque. Importez les 5 bibliothèques répertoriées dans Préparation.

#Lancez Google Chrome
browser = webdriver.Chrome("/Users/ibuki_sakata/opt/anaconda3/lib/python3.7/site-packages/chromedriver_binary/chromedriver")
browser.implicitly_wait(3)

Utilisez ensuite ChromDriver et le sélénium pour démarrer Chrom. La deuxième ligne est la description du démarrage. Le chemin entre parenthèses est le chemin du pilote Chrom. La description sur la troisième ligne est pour mettre le programme en pause afin que le processus suivant ne se poursuive pas tant que le navigateur n'est pas démarré.

#Aller à l'URL
url_pricone = "https://priconne-redive.jp/fankit02/"
browser.get(url_pricone)
time.sleep(3)

L'URL de la première page du kit de fans est spécifiée dans la première ligne et la transition est effectuée vers l'URL spécifiée dans la deuxième ligne. La méthode get du navigateur est similaire à la méthode get de communication http.

#Obtenez les URL de toutes les pages Web des kits de fans
current_url = browser.current_url
html = requests.get(current_url)
bs = BeautifulSoup(html.text, "html.parser")
fankitPage = bs.find("ul", class_="page-nav").find_all("li")
page = []

for li_tag in fankitPage:
    a_tag = li_tag.find("a")
    if(a_tag.get('class')):
        page.append(current_url)
    else:
        page.append(a_tag.get("href"))

Ici, obtenez l'URL de toutes les pages telles que la première page et la deuxième page. Utilisez BeautifulSoup pour obtenir l'URL. Il existe de nombreux sites qui expliquent en détail comment utiliser BeautifulSoup, je ne vais donc pas l'expliquer ici.

#Télécharger le fan kit
for p in page:
    html = requests.get(p)
    browser.get(p)
    time.sleep(1)
    bs = BeautifulSoup(html.text, "html.parser")
    ul_fankit_list = bs.find("ul", class_="fankit-list")
    li_fankit_list = ul_fankit_list.find_all("li")
    fankit_url = []
    for li_tab in li_fankit_list:
        a_tab = li_tab.find("a")
        fankit_url.append(a_tab.get("href"))

    for url in fankit_url:
        browser.get(url)
        time.sleep(1)
        html_fankit = requests.get(url)
        bs_fankit = BeautifulSoup(html_fankit.text, "html.parser")
        h3_tag = bs_fankit.find("h3")
        title = h3_tag.text
        os.makedirs(title, exist_ok=True)
        ul_dl_btns = bs_fankit.find_all("ul", class_="dl-btns")
        for i,ul_tag in enumerate(ul_dl_btns, start=0):
            li_tag = ul_tag.find("li")
            a_tag = li_tag.find("a")
            img_url = a_tag.get("href")
            browser.get(img_url)
            time.sleep(1)
            print(img_url)
            img = requests.get(img_url)
            with open(title + "/{}.jpg ".format(i), "wb") as f:
                f.write(img.content)
        browser.back()
    

Téléchargez le kit ventilateur ici. Les bases sont les mêmes qu'avant. Le flux consiste à obtenir la source html avec les requêtes, à l'analyser avec BeautifulSoup et à obtenir la balise souhaitée. Les images sont téléchargées en ouvrant le fichier en mode binaire et en écrivant les données d'image obtenues dans les requêtes.

Résultat d'exécution

スクリーンショット 2020-06-07 14.53.32.png

De cette manière, les images sont téléchargées pour chaque fan kit.

Recommended Posts

Télécharger automatiquement des images avec grattage
Enregistrez des images avec le web scraping
Impossible de télécharger des images avec Google_images_download
Télécharger et télécharger des images avec Falcon
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Grattage avec Python
Grattage avec Python
Grattage avec du sélénium
Grattage de 100 images Fortnite
Rechercher et télécharger automatiquement des vidéos YouTube avec Python
Télécharger en masse des images à partir d'une URL spécifique avec python
Grattage réussi avec Selenium
Grattage en Python (préparation)
Essayez de gratter avec Python.
Télécharger des images à l'aide de demandes
Grattage avec Python + PhantomJS
Grattage avec coquille tremblante
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Gratter avec une belle soupe
Scraping RSS avec Python
Centrer l'image avec python-pptx
Collez automatiquement des images dans des matériaux Powerpo avec python + α
Télécharger en masse des images à partir d'une URL de site spécifique avec python
Téléchargement d'image avec l'API Flickr
Images en bordure avec python Partie 1
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
Grattage immédiat des images google!
Grattage avec du sélénium en Python
Grattage Web facile avec Scrapy
Grattage avec Tor en Python
Scraping prévisions météorologiques avec python
Gratter la moyenne du Nikkei avec le dramaturge-python
Grattage avec Selenium + Python Partie 2
Combinez deux images avec Django
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Télécharger le fichier csv avec python
Gratter la page i-town avec du sélénium
Grattage de table avec belle soupe
Téléchargement par lots d'images à partir d'une URL spécifique avec la version modifiée de python
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé de me connecter automatiquement à Twitter avec du sélénium (RPA, scraping)
Reconnaissance des nombres dans les images avec Python
Essayez de gratter avec Python + Beautiful Soup
Obtenez le lien de téléchargement Splunk en grattant
Télécharger des images de «Irasutoya» à l'aide de Scrapy
Racler plusieurs pages avec Beautiful Soup
Scraping avec Node, Ruby et Python
Téléchargement de fichiers implémenté avec Python + Bottle
Scraping avec Selenium en Python (Basic)
Grattage WEB avec BeautifulSoup4 (page en couches)
Grattage avec Python, Selenium et Chromedriver
Gratter le classement Web d'Alexa avec pyQuery
Web scraping avec Python Première étape