Bonjour. C'est @tfujitani, un nerd des pentes. Cette fois, j'ai créé Python qui peut enregistrer l'image du blog du membre spécifié de Nogisaka 46 de manière entièrement automatique, donc je vais la publier. Au fait, la raison pour laquelle j'ai décidé de faire de ce programme «trigger» est que Sayuri Inoue, qui était un bon candidat, a obtenu son diplôme. (C'est une bonne chanson, n'est-ce pas?) Le programme créé à cet effet sortira maintenant.
・ Python ・ Belle soupe
pip install requests
pip install beautifulsoup4
Je racle en utilisant Beautiful Soup et Python3. Cette fois, spécifiez l'URL du blog du membre que vous souhaitez spécifier. Pour Manatsu Akimoto (http://blog.nogizaka46.com/manatsu.akimoto/), "manatsu.akimoto" Rika Ito (http://blog.nogizaka46.com/riria.itou/) est comme "riria.itou". Vous pouvez également spécifier les points de début et de fin de la période que vous souhaitez enregistrer.
nogiblog.py
# coding:utf-8
from time import sleep
import time
from bs4 import BeautifulSoup
import sys
import requests, urllib.request, os
from selenium.common.exceptions import TimeoutException
domain="http://blog.nogizaka46.com/"
member="manatsu.akimoto" #Désignation de membre
url=domain+member+"/"
def getImages(soup,cnt,mouthtrue):
member_path="./"+member
#Fonction pour enregistrer 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
imgurl=img.attrs["src"]
imgurlnon=imgurl.replace('https','http')
if mouthtrue:
try:
urllib.request.urlretrieve(imgurlnon, member_path+ str(year)+'0'+str(mouth) + "-" + str(cnt) + ".jpeg ")
except:
print("error",imgurlnon)
else:
try:
urllib.request.urlretrieve(imgurlnon, member_path + str(year)+str(mouth) + "-" + str(cnt) + ".jpeg ")
except:
print("error",imgurlnon)
if(__name__ == "__main__"):
#Début du blog à enregistrer
year=2012
mouth=12
#Fin du blog à enregistrer
endyear=2020
endmouth=6
while(True):
mouthtrue=True
if mouth<10:
BlogPageURL=url+"?d="+str(year)+"0"+str(mouth)
else:
BlogPageURL=url+"?d="+str(year)+str(mouth)
mouthtrue=False
headers = {"User-Agent": "Mozilla/5.0"}
soup = BeautifulSoup(requests.get(BlogPageURL, headers=headers).content, 'html.parser')#Obtenez du HTML
print(year,mouth)
sleep(3)
cnt = 0
ht=soup.find_all("div", class_="paginate")
print("ht",ht)
getImages(soup,cnt,mouthtrue)#Appel de la fonction de stockage d'image
if len(ht)>0:#S'il y a plusieurs pages dans le même mois, n'enregistrez que cette page
ht_url=ht[0]
print(ht_url)
url_all=ht_url.find_all("a")
for i,hturl in enumerate(url_all):
if (i+1)==len(url_all):
break
link = hturl.get("href")
print("url",url+link)
soup = BeautifulSoup(requests.get(url+link, headers=headers).content, 'html.parser')
sleep(3)
getImages(soup,cnt,mouthtrue)#Appel de la fonction de stockage d'image
if year==endyear and mouth==endmouth:
print("Finish")
sys.exit()#La fin du programme
if mouth==12:
mouth=1
year=year+1
print("update",year,mouth)
else:
mouth=mouth+1
print("update",year,mouth)
Au fait, "#S'il y a plusieurs pages dans le même mois, n'enregistrez que ces pages" est une image comme celle-ci. Dans l'exemple de cette image, il s'agit du blog de Manatsu Akimoto en janvier 2013, mais après avoir sauvegardé l'image sur la première page, obtenez 2, 3 et 4 liens et affichez l'image sur chaque page. Le contenu est à sauvegarder.
Lorsque je l'ai essayé sur le blog de M. Manatsu Akimoto, j'ai pu confirmer que l'image avait été enregistrée sous la forme suivante.
Au fait, je pensais que ht était difficile à comprendre dans le programme précédent, je vais donc afficher le résultat de l'exécution de cette partie. C'est un peu déroutant, mais comme ça, chaque page mensuelle est affichée par grattage.
ht
[<div class="paginate"> 1 | <a href="?p=2&d=201301"> 2 </a> | <a href="?p=3&d=201301"> 3 </a> | <a href="?p=4&d=201301"> 4 </a> | <a href="?p=2&d=201301">></a></div>, <div class="paginate"> 1 | <a href="?p=2&d=201301"> 2 </a> | <a href="?p=3&d=201301"> 3 </a> | <a href="?p=4&d=201301"> 4 </a> | <a href="?p=2&d=201301">></a></div>]
Après cela, vous pouvez voir qu'après avoir gratté la première page comme indiqué ci-dessous, la quatrième page est grattée.
url http://blog.nogizaka46.com/manatsu.akimoto/?p=2&d=201301
url http://blog.nogizaka46.com/manatsu.akimoto/?p=3&d=201301
url http://blog.nogizaka46.com/manatsu.akimoto/?p=4&d=201301
En passant, quand j'ai sauvé le blog de Sayuri Inoue, j'avais une marge de plus de plusieurs milliers (j'ai effacé les extras et c'était 2385). Vous pouvez voir le rôle du travailleur acharné de Sayu.
L'article à https://qiita.com/xxPowderxx/items/e9726b8b8a114655d796 était incroyablement utile.
Recommended Posts