Comment collecter des images en Python

introduction

Je voulais collecter des images pour le Deep Learning, alors j'ai fini avec cet article. Cela n'a pas fonctionné parce que le contenu de la page Web avait changé, alors je l'ai réécrit.

code

image_download.py


import requests
import urllib.request
import time
import json

def scraping(url, max_page_num):
    #Mise en œuvre de la pagénation
    page_list = get_page_list(url, max_page_num)
    #Obtenir la liste des URL des images
    all_img_src_list = []
    for page in page_list:
        try:
            img_src_list = get_img_src_list(page)
            all_img_src_list.extend(img_src_list)
        except:pass
    return all_img_src_list


def get_img_src_list(url):
    #Accéder à la page des résultats de recherche
    response = requests.get(url)
    webtext = response.text

    #Dans l'article original, j'ai utilisé la soupe Beatiful, mais je n'ai pas pu obtenir l'image, alors je l'ai changée.
    start_word='<script>__NEXT_DATA__ = '
    start_num = webtext.find(start_word)
    webtext_start = webtext[start_num + len(start_word):]
    end_word = ';__NEXT_LOADED_PAGES__='
    
    end_num = webtext_start.find(end_word)
    webtext_all = webtext_start[:end_num]
    web_dic = json.loads(webtext_all)
    img_src_list = [img['imageSrc'] for img in web_dic["props"]["initialProps"]["pageProps"]["algos"]]

    return img_src_list


def get_page_list(url, max_page_num):
    img_num_per_page = 20 #Si vous modifiez cela, le nombre de téléchargements changera.
    page_list = [f'{url}{i*img_num_per_page+1}' for i in range(max_page_num)]
    return page_list

def download_img(src, dist_path):
    time.sleep(1)
    try:
        with urllib.request.urlopen(src) as data:
            img = data.read()
            with open(dist_path, 'wb') as f:
                f.write(img)
    except:
        pass


def main():
    search_words = ["Kanna Hashimoto"] #Passez le mot que vous souhaitez rechercher dans une liste.
    for num, search_word in enumerate(search_words):
        url = f"https://search.yahoo.co.jp/image/search?p={search_word}&ei=UTF-8&b="
        max_page_num = 20
        all_img_src_list = scraping(url, max_page_num)
        
        #Téléchargement d'image
        for i, src in enumerate(all_img_src_list):
            download_img(src, f'./img/image_{num}_{i}.jpg') #Veuillez modifier la destination de sauvegarde de manière appropriée


if __name__ == '__main__':
    main()

Si vous créez un dossier img et exécutez ce qui précède avec python, l'image sera enregistrée dans le dossier img. C'est l'image. image.png

Soyez prudent car le scraping met une charge sur le serveur de l'autre partie!

référence

J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!

Recommended Posts

Comment collecter des images en Python
Comment développer en Python
[Python] Comment faire PCA avec Python
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
[Itertools.permutations] Comment créer une séquence en Python
Comment utiliser BigQuery en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment collecter des images de visage relativement facilement
Comment remplir dynamiquement des zéros avec Python
Comment utiliser les expressions régulières en Python
Comment afficher Hello World en python
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
Comment afficher les images dans l'administration de Django
Comment dessiner une image OpenCV avec Pygame
Comment installer python
Comment utiliser la bibliothèque C en Python
Comment recevoir des arguments de ligne de commande en Python
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Résumé de la façon d'importer des fichiers dans Python 3
Comment simplifier l'ajustement polymorphe restreint en python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment implémenter la mémoire partagée en Python (mmap.mmap)
Comment créer un fichier JSON en Python
Résumé de l'utilisation de MNIST avec Python
Comment spécifier la version TLS dans les requêtes python
Comment notifier les canaux Discord en Python
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
Comment exécuter LeapMotion avec Python non-Apple
[Python] Comment dessiner un histogramme avec Matplotlib
Comment générer "Ketsumaimo" en standard en Python
Comment gérer le type datetime dans sqlite3 de python
Comment apporter des modifications à l'interpréteur Python dans Pycharm
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment supprimer les éléments en double dans la liste Python 3
[2020.8 dernière] Comment installer Python
Comment installer Python [Windows]
Encodage base64 des images en Python 3
Pour vider stdout en Python
python3: Comment utiliser la bouteille (2)
[Python] Comment utiliser la liste 1
Connectez-vous au site Web en Python
Comment mettre à jour Tkinter de Python vers la version 8.6
Comment utiliser Python Argparse