[PYTHON] Grattage de l'image du blog de Hinatazaka

introduction

Si vous n'êtes pas intéressé par le code et souhaitez une image ici

C'est un raclage du blog d'Hinatazaka Cette fois, nous nous concentrons uniquement sur le téléchargement d'images

Environnement de développement

Python:3.7 beautifulsoup4:4.8.1

code

Si vous avez des améliorations, tsukkomi, etc., veuillez laisser un commentaire ou Twitter (@Azumi_cpa).

from bs4 import BeautifulSoup
import requests
import time


def get_picture_url(url):
    pic_urls = []
    page_number = 0

    #Obtenez l'url de l'image sur chaque page jusqu'à ce que l'article disparaisse
    while True:
        print(url + "&page=" + str(page_number))
        response = requests.get(url + "&page=" + str(page_number))
        soup = BeautifulSoup(response.text, 'lxml')
        a = soup.find_all('div', class_='p-blog-article')

        #Je pense que je peux écrire plus magnifiquement ici
        if a != []:
            for b in a:
                for c in b.find_all('img'):
                    pic_urls.append(c["src"])
            print(page_number)
            page_number += 1
            time.sleep(3)
        else:
            break

    return pic_urls


def save_pictures(name, url):
    #Obtenir l'URL de l'image
    pic_urls = get_picture_url(url)

    #Commencer à économiser
    for i, url in enumerate(pic_urls):
        try:
            response = requests.get(url)
            image = response.content

            #Nom de membre/nombre.jpg
            file_name = name + "/" + str(i) + ".jpg "
            with open(file_name, "wb") as aaa:
                aaa.write(image)

            time.sleep(3)
        except:
            print("Erreur")


def get_members():
    member_list = {}
    response = requests.get('https://www.hinatazaka46.com/s/official/diary/member?ima=0000')
    soup = BeautifulSoup(response.text, 'lxml')

    members = soup.find_all("a", class_="p-blog-face__list")

    for member in members:
        #Supprimer les espaces et les sauts de ligne
        member_name = member.text.replace(" ", "")
        member_name = member_name.replace("\n", "")

        #Obtenez également l'url de la 0ème page du blog(À partir de la page 1"&page=n"Ajouter
        member_list[member_name] = "https://www.hinatazaka46.com" + member.attrs["href"]

    return member_list


def main():
    #Créer une liste de membres
    members_list = get_members()
    
    for name, url in members_list.items():
        print(name + "début")
        save_pictures(name, url)


main()

Que faire à l'avenir

Recommended Posts

Grattage de l'image du blog de Hinatazaka
Collection d'images avec scraping Web
Grattage écologique grâce au traitement d'image
Faisons du scraping d'images avec Python
Grattage 1
Nogisaka 46 Obtenez des images de blog en grattant