Dieser Artikel ist Aikatsu! Adventskalender 2019 Dies ist der Artikel am 18. Tag. Gestern war ein Artikel von gecko655 "Aikatsu! Lassen Sie sich von Spotify die musikalischen Merkmale des Songs erklären".
Ich denke, der Synchronsprecher ist eines der Elemente, die die "Aikatsu!" - Serie unterstützen. Aikatsu! Um ein Synchronsprecher zu werden, werde ich Wikipedia abkratzen, um herauszufinden, wie viele Jahre es für eine Rolle in der "Aikatsu!" - Serie besetzt sein wird.
Die Konfiguration ist grob in zwei Funktionen unterteilt.
import re
import requests
from urllib.request import urlopen
from urllib.parse import urlparse
import urllib.request
from bs4 import BeautifulSoup
from collections import OrderedDict
#Holen Sie sich Sprachschauspieler von der Anime-Seite von Wikipedia
def get_voice_actor(soup):
list_voice_actors_tmp=[]
replace_list = ['/Lied-', '\[', '\(', "\n"]
split_list = ['→', '、']
for target in [i.text for i in soup.findAll('dd')]:
if target.startswith("Stimme"):
#Ausschluss unnötiger Zeichenketten
voice_actor = target.replace('Stimme- ','')
voice_actor = voice_actor.replace(" ","")
for i in replace_list:
m = re.search(i, voice_actor)
if(bool(m)):
voice_actor = voice_actor[0:m.start()]
#Geteilte Verarbeitung mehrerer Casts, z. B. vom Brett steigen
split_flg = False
for i in split_list:
tmp_voice_actor_list = voice_actor.split(i)
if len(tmp_voice_actor_list) > 1:
#Da es erweitert ist, wird es dupliziert, aber da es zum Zeitpunkt des Scrapings dupliziert wird, wird das doppelte Löschen sofort durchgeführt
list_voice_actors_tmp.extend(tmp_voice_actor_list)
split_flg = True
if split_flg:
continue
list_voice_actors_tmp.append(voice_actor)
return list_voice_actors_tmp
#Holen Sie sich eine Liste der Aikatsu-Sprecher
target_work_characters = ['Aikatsu!Zeichenliste von','Aikatsuスターズ!', 'Aikatsuフレンズ!']
list_voice_actors = []
for character in target_work_characters:
html = requests.get(r'https://ja.wikipedia.org/wiki/{}'.format(urllib.parse.quote_plus(character, encoding='utf-8')))
list_voice_actors.extend(get_voice_actor(BeautifulSoup(html.text, "lxml")))
Ich mache den Namen des Synchronsprechers in den Charakteren der "Aikatsu!" - Serie. Es ist ein Prozess zum Ausschließen von Suffixen usw., die an den Namen des Sprachschauspielers angehängt sind.
Infolgedessen wird die folgende Liste ausgegeben.
['Sumire Moroboshi',
'Azusa Tadokoro',
'Ayaka Ohashi',
'Tomoyo Kurosawa',
'Manami Numakura',
'Kiyono Yasuno',
'Yuna Mimura',
'Asami Seto',
'Satomi Moriya',
'Grundlagen Shino',
:
:
'Yu Wakui',
'Misako Tomioka',
'Nami Tanaka',
'Yuri Yamaoka',
'Mitsuki Saiga',
'Sakamoto-Kun',
'Shinya Takahashi',
'Takashi Onozuka',
'Nanako Mori']
Die gleichnamige Besetzung wird im Ausgabeergebnis dupliziert. Dies liegt daran, dass es Leute wie Sumire Moroboshi gibt, die in Bezug auf die Implementierung mehrere Werke übergreifen. Eine doppelte Löschung wird hier nicht durchgeführt, sondern in der nachfolgenden Verarbeitung gelöscht.
Da es für jede Rolle mehrere Personen gibt, z. B. Entlassung, besetze ich sie und erweitere sie auf List.
#Erfassung von Besetzungsinformationen für Sprecher
def get_cast(html):
soup = BeautifulSoup(html, "lxml")
list_cast=[]
#Loop in Einheiten von Anime / Spiel
for extract_dl in soup.findAll('dl') :
for extract_dl_child in extract_dl.children :
#Zeilenumbrüche ausschließen
if extract_dl_child.string == '\n':
continue
#Da das Jahr in der ersten Zeile eingestellt ist, erhalten Sie für die Einstellung
if extract_dl_child.string is not None:
year = extract_dl_child.string
#Holen Sie sich Werke und Besetzung
else:
#Schleife für Werke
for extract_li in extract_dl_child.findAll('li'):
extract_a = extract_li.find('a')
#Es ist möglich, Nonetype-Daten abzurufen
if isinstance(extract_a,type(None)) == False:
title = extract_a.text
#Holen Sie sich den Charakternamen
title_char = str(extract_li.get_text())
character = title_char[title_char.find('(')+1:title_char.find(')')]
#Jahr,Titel,Machen Sie 1 Daten mit dem Charakternamen.
list_cast.append("{},{},{}".format(year, title.replace(" ",""), character))
return list_cast
#Informationen zu Synchronsprechern erhalten Sie bei Wikipedia
def get_html(target):
sufffix_dict = {"Synchronsprecher": "_(%E5%A3%B0%E5%84%AA)","Darsteller": "_(%E4%BF%B3%E5%84%AA)",}
res = requests.get(r'https://ja.wikipedia.org/wiki/{}'.format(urllib.parse.quote_plus(target, encoding='utf-8')))
if res.status_code == 200:
return get_cast(res.text)
#Bedenken Sie, dass es Fälle gibt, in denen die Reihenfolge je nach Python-Version nicht garantiert ist
for suffix in OrderedDict(sufffix_dict).values():
print(suffix)
res = requests.get(r'https://ja.wikipedia.org/wiki/{}{}'.format(urllib.parse.quote_plus(target, encoding='utf-8'),suffix))
if res.status_code == 200:
break
return get_cast(res.text)
#Verarbeitung von Sprachdarstellern
def get_target_carrer(target_work, list_voice_actors):
list_carrer =[]
for target in set(list_voice_actors):
#Informationen zu Synchronsprechern erhalten Sie bei Wikipedia
list_cast = get_html(target)
#Wenn Sie die Informationen nicht erhalten können, fahren Sie mit dem nächsten Sprecher fort
if len(list_cast) == 0 :
continue
#Erwarb eine Karriere als Synchronsprecher bis zur Zielarbeit
#Erhalten Sie die Anzahl der Arbeiten und jahrelange Erfahrung bis zur Zielarbeit
cast_year = None
debut_year = None
count_cast_num = 1
for str_cast in sorted(list_cast):
#print(str_cast)
#Holen Sie sich das Debütjahr. Das Alter ist abstrakt, also entfernen Sie es
if not str_cast.split(',')[0].endswith("Alter") and debut_year is None:
debut_year = str_cast.split(',')[0]
#Holen Sie sich das Jahr zum ersten Mal in der Zielarbeit besetzt
if str_cast.split(',')[1] == target_work:
cast_year = str_cast.split(',')[0]
#Wenn das Jahr, in dem das Zielwerk zum ersten Mal besetzt wurde, alt ist, fahren Sie mit dem nächsten Synchronsprecher fort
if cast_year is not None:
target_work_carrer = int(cast_year.replace('Jahr','')) - int(debut_year.replace('Jahr',''))+ 1
list_carrer.append("{},{},{},{},{},{}".format(target_work,
target,
debut_year,
cast_year,
str('{}Jahr'.format(target_work_carrer)),
str('{}die Arbeit'.format(count_cast_num))
)
)
break
count_cast_num = count_cast_num + 1
return list_carrer
target_works_list = ['Aikatsu!', 'Aikatsuスターズ!', 'Aikatsuフレンズ!']
list_va_carrer = []
for target_work in target_works_list:
list_va_carrer.extend(get_target_carrer(target_work, list_voice_actors))
Hier wird aus dem Namen des Synchronsprechers die Animations- / Spielarbeit, die von diesem Synchronsprecher ausgeführt wird, erfasst und sortiert. Die Geschichte des Synchronsprechers, als er zum ersten Mal in der Serie "Aikatsu!" Aus seinem Debütwerk besetzt wurde, und die Anzahl der bisher besetzten Werke werden angezeigt.
Die Ausgabe sieht so aus.
['Aikatsu!,Akemi Kanda,das Jahr 2000,2013,14. Jahr,152 Werke',
'Aikatsu!,Ayaka Ohashi,Jahr 2012,Jahr 2012,1. Jahr,3 Werke',
'Aikatsu!,Mamiko Noto,1998,Jahr 2012,15. Jahr,405 funktioniert',
'Aikatsu!,Hisako Kanemoto,2009,2015,7. Jahr,209 Werke',
'Aikatsu!,Mari Yokoo,1980,2013,34. Jahr,155 Werke',
'Aikatsu!,Hiroshi Ienaka,1986,Jahr 2012,27. Jahr,152 Werke',
'Aikatsu!,Miki Hase,2010,2014,5. Jahr,11 Werke',
'Aikatsu!,Aya Susaki,2010,2014,5. Jahr,61 Werke',
'Aikatsu!,Nanako Mori,2013,2015,Drittes Jahr,6 Werke',
'Aikatsu!,Satomi Moriya,2008,Jahr 2012,5. Jahr,28 Werke',
:
:
'Aikatsu Freunde!,Yuri Yamaoka,2009,2018,10. Jahr,66 Werke',
'Aikatsu Freunde!,Risa Kubota,2015,2018,4. Jahr,26 Werke',
'Aikatsu Freunde!,Makoto Homura,das Jahr 2000,2018,19. Jahr,206 Werke',
'Aikatsu Freunde!,Ikumi Hasegawa,2016,2018,Drittes Jahr,27 Werke',
'Aikatsu Freunde!,Tomokazu Sugita,1999,2019,21. Jahr,672 funktioniert',
'Aikatsu Freunde!,Nakaeko Schloss,2014,2018,5. Jahr,68 Werke',
'Aikatsu Freunde!,Yuki Kuwahara,2013,2018,6. Jahr,93 Werke']
Die erste Besetzungsrolle wird als Debütjahr festgelegt und von dem Jahr abgezogen, in dem sie zum ersten Mal in der "Aikatsu!" - Serie besetzt wurde.
Wenn es sich um einen Synchronsprecher handelt, ist es nicht möglich, einen Fall wie "XXXX_ (Name des Synchronsprechers)" aufzunehmen. Wir haben ihn daher so implementiert, dass er aufgegriffen werden kann.
Wenn ein Synchronsprecher wie Rin Arai, der gerade sein Debüt gegeben hat, oder ein Schauspieler wie Kaiko Miyama ebenfalls beliebt ist, unterscheidet er sich vom Fort Mat des allgemeinen Synchronsprechers Wikipedia. Es gibt einen Punkt, den es nicht gibt. Wenn Sie eine Implementierung erstellen, die so viel aufnimmt, scheint es viele Einzelimplementierungen zu geben. Ich dachte, es wäre besser, dies nicht zu tun, aber ich dachte, es wäre besser, eine Implementierung zu erstellen, die erkennen kann, wer sie nicht abholen kann.
Unten finden Sie eine Liste der Ergebnisse, die mit Pandas, Ausgabe und Excel angepasst wurden.
import pandas as pd
abc = pd.Series(list_va_carrer)
df = abc.str.split(',', expand=True)
df.columns = ["Titel der Arbeit", "Name des Synchronsprechers", "Debütjahr", "Casting-Jahr", "Vom Debüt bis zum Casting(Jahre)","Vom Debüt bis zum Casting(役数)"]
df.to_csv("aikatsu.csv")
Aikatsu! Adventskalender 2019 Es sind noch ein paar Tage frei, also zögern Sie nicht, sich uns anzuschließen!
Recommended Posts