[PYTHON] Grattage de 100 images Fortnite

J'ai récupéré 100 images de Fortnite sur Yahoo.

· Mac ・ Python3

(1) Construction de l'environnement, structure des répertoires

Créez un répertoire fortnite sur votre bureau. Créez un dossier images (pour enregistrer les images) et scraping.py dans le répertoire.

fortnite
├scraping.py
└images

Créez un environnement virtuel dans le répertoire.

python3 -m venv .
sorce bin/activate

Installer les packages et modules requis

pip install beautifulsoup4
pip install requests
pip install lxml

(2) Décrivez scraping.py

Le grattage d'images de Fortnite utilise les résultats de recherche d'images de Yahoo. https://search.yahoo.co.jp/image/search?p=%E3%83%95%E3%82%A9%E3%83%BC%E3%83%88%E3%83%8A%E3%82%A4%E3%83%88&ei=UTF-8&b=1 Il peut être confirmé qu'il y a 10 images par page, et qu'il y a plus de 100 images, y compris les pages suivantes. Grattez d'ici et stockez dans le dossier images.

.py:scraping.py


from bs4 import BeautifulSoup
import lxml
import requests
import os
import time


def main():
    #20 images par page, variables pour gratter la page suivante
    page_key=0

    #Variables de numérotation des images enregistrées
    num_m = 0

    for i in range(6):
        URL = "https://search.yahoo.co.jp/image/search?p=%E3%83%95%E3%82%A9%E3%83%BC%E3%83%88%E3%83%8A%E3%82%A4%E3%83%88&ei=UTF-8&b={}".format(page_key + 1)
        res = requests.get(URL)
        res.encoding = res.apparent_encoding
        html_doc = res.text
        soup = BeautifulSoup(html_doc,"lxml")

        list = []
        _list = soup.find_all("div",class_="gridmodule")
        for i in _list:
            i2 = i.find_all('img')
            for i3 in i2:
                i4 = i3.get('src')
                list.append(i4)


        for i in list:
            i2 = requests.get(i)
            #Enregistrer avec chemin absolu
            with open(os.path.dirname(os.path.abspath(__file__)) + '/images' + '/{}'.format(num_m)+'.jpeg','wb')as f:
                f.write(i2.content)
            num_m += 1
            #Arrêtez le processus de sauvegarde lorsque la 101ème image est atteinte (arrêt pour instruction)
            if num_m == 101:
                break

        #Lorsque l'instruction for du processus de sauvegarde interne est arrêtée, le processus d'arrêt de l'instruction for externe également
        else:
            continue
        break


        #Ouvrez 1 seconde d'intervalle pour éviter la charge du serveur
        time.sleep(1)

        page_key+=20

if __name__ == '__main__':
    main()

Explication supplémentaire

-À la suite de la recherche d'un emplacement probable de l'URL de l'image à l'aide de la "vérification" de Google Chrome, il a été confirmé que la classe de la balise div se trouve dans la partie gridmodule. Gratter la partie tag img à partir de là -Obtenir la valeur de l'attribut src de la balise img avec get ('src'). -Bien que l'attribut src de la balise img acquise soit url, il est de type str, donc l'objet de réponse qui stocke les informations de réponse est acquis par les requêtes. Les objets de réponse incluent le texte, l'encodage, le status_code et le contenu. le contenu est nécessaire pour obtenir le corps de la réponse au format binaire. (Référence) Comment utiliser les requêtes (bibliothèque Python) -Spécifiez le chemin absolu dans le fichier et écrivez en mode wb (référence) Python, opération du système d'exploitation -Après avoir enregistré 100 feuilles avec l'instruction for, annulez l'instruction for interne et l'instruction for externe. Python pour rupture de boucle (condition de rupture)

Lorsque vous l'exécutez, vous pouvez voir que les images ont été enregistrées dans le dossier images.

Recommended Posts

Grattage de 100 images Fortnite
Télécharger automatiquement des images avec grattage
Enregistrez des images avec le web scraping
Grattage 1
GAN: DCGAN Part1 - Scraping d'images Web
Nogisaka 46 Obtenez des images de blog en grattant
Début du grattage
[Scraping] Scraping Python
Échantillon de grattage
raclage Web
Grattage d'images ②-Obtenez des images de bing, yahoo, Flickr