[PYTHON] Nogisaka 46 Obtenez des images de blog en grattant

introduction

Nogisaka 46 J'ai sauvé l'image du blog en grattant avec Python. J'ai gratté la première page de Midsummer Akimoto.

code

scraping.py


import requests
import urllib.request
import os
from bs4 import BeautifulSoup


def scraping():
    #URL du membre
    member_name = "manatsu.akimoto"
    url = "http://blog.nogizaka46.com/" + member_name + "/"

    #Créer le dossier
    if not os.path.isdir(member_name):  # ”member_S'il n'y a pas de dossier «nom»
        print("Créer le dossier")
        os.mkdir(member_name)

    #Pour compter le nombre de feuilles enregistrées
    cnt = 0

    #Génération d'objets BeautifulSoup
    headers = {"User-Agent": "Mozilla/5.0"}
    soup = BeautifulSoup(requests.get(
        url, headers=headers).content, 'html.parser')

    #Trouvez le html où se trouve l'image
    for entry in soup.find_all("div", class_="entrybody"):  #Obtenir tous les corps d'entrée
        for img in entry.find_all("img"):  #Obtenir toutes les images
            cnt += 1
            urllib.request.urlretrieve(
                img.attrs["src"], "./" + member_name + "/" + member_name + "-" + str(cnt) + ".jpeg ")
    print("l'image" + str(cnt) + "J'ai enregistré une feuille.")


if __name__ == '__main__':
    scraping()


URL du membre

スクリーンショット (1).png スクリーンショット (2).png Puisque le nom du membre est utilisé comme URL, je mets le nom du membre que je souhaite obtenir dans member_name.

member_name = "manatsu.akimoto"
url = "http://blog.nogizaka46.com/" + member_name + "/"

Génération d'objets BeautifulSoup

Il y a une explication facile à comprendre sur le site suivant. Site de référence: https://python.civic-apps.com/beautifulsoup4-selector/


Trouvez le html où se trouve l'image

En regardant le html qui compose le blog, スクリーンショット (7).png Il y a un corps dans la balise div du nom de classe "entrybody" スクリーンショット (8).png Il y a une image dans la balise img, alors enregistrez-la dans un dossier dès que vous la trouvez.

for entry in soup.find_all("div", class_="entrybody"):#Obtenir tous les corps d'entrée
    for img in entry.find_all("img"):#Obtenir toutes les images
        cnt += 1
        urllib.request.urlretrieve(img.attrs["src"], "./" + member_name + "/" + member_name + "-" + str(cnt) + ".jpeg ")

Résultat d'exécution

Page au moment de l'exécution

screencapture-blog-nogizaka46-manatsu-akimoto-2020-02-19-12_42_35.jpg

Dossier créé

スクリーンショット (12).png

Affichage de la ligne de commande

Créer le dossier
J'ai enregistré 22 images.

Recommended Posts

Nogisaka 46 Obtenez des images de blog en grattant
Obtenez le lien de téléchargement Splunk en grattant
Grattage de 100 images Fortnite
Obtenez la maintenance de l'iPad en grattant et en informant Slack
Nogizaka46 Un programme qui enregistre automatiquement les images de blog
Grattage d'images ②-Obtenez des images de bing, yahoo, Flickr
Obtenez la liste "J'aime" de Qiita en grattant
Grattage de l'image du blog de Hinatazaka
Grattage immédiat des images google!
Enregistrez des images avec le web scraping
Collection d'images avec scraping Web
Grattage de bande sur une seule ligne avec du tsé
Ne collectez que des images faciales d'une personne spécifique grâce au grattage Web