はじめに###
巷ではよく今期アニメランキングを発表していますが、どうも納得がいかないことが多いと聞きます。例えば、このサイトでは、
1位 バーチャルさんはみている
2位 転生したらスライムだった件
3位 けものフレンズ2
4位 かぐや様は告らせたい
5位 五等分の花嫁
(https://anime.nicovideo.jp/ranking/view-total.html?from=nanime_rank-view-daily_rank
)
他のアニメは「まあまあ正しいのかな」としても、「バーチャルさんはみている」が1位というのは、おかしいような気もします。
勿論、アクセス数で測っているので有料枠などはアクセス数が低くなることは必然でしょう。アニメをインターネットで生配信しているか否かもアクセス数が違う原因になります。現に今期人気アニメの「約束のネバーランド」は30~14位をウロウロしています。
よってこのランキングを参考に、「どのアニメが人気なのか」を判断することは出来ません。このランキングは、あくまで「このサイトで、どれくらいアクセス数があったのか」ということでしかないのです。
よってとりあえず今期は何が人気なのかを判断して、3話ぐらい見てから切るか考えようという人にとっては、このランキングはあまり役に立たないでしょう。
そこで色々調べたところ、このサイトがランキングとして使えそうだと考えました。
MyAnimeList https://myanimelist.net/anime/season
理由としては、レヴュー数が5万~16万と圧倒的に多く、ランキングの基準を「アクセス数」ではなく、「作品の評価」(10段階)で決めているからです。10段階であれば、より作品の面白さで点数に差がつくので、繊細なランキングができることでしょう。欠点は外国人がレビューしていることですが、見たところ、日本で人気なものは、大体海外でも人気なようなので、大丈夫だと判断しました。
(補足:Crunchyrollも考えましたが、作品数がいくつか欠けており、5段階評価で、レヴュー数も少なかった(50~600ぐらい)で少なかったので辞めました。)
https://www.crunchyroll.com/videos/anime/seasons/winter-2019
実際にやってみる###
ウェブスクレイピングは初めてだったので、このくらいの難易度は丁度良かったように思えます。
(2019/01/25 shiracamusさんのご指摘でコードをアップデートしました。)
from urllib.request import urlopen
from bs4 import BeautifulSoup as soup
def download(url='https://myanimelist.net/anime/season'):
http = urlopen(url)
html = soup(http, 'html.parser')
# 今期のアニメだけを取るためにhtmlの「今期」の部分だけを抽出
containers = html.find("div", class_="seasonal-anime-list js-seasonal-anime-list js-seasonal-anime-list-key-1 clearfix")
# スコアとタイトルを抽出・産出
titles = containers.findAll("a", class_="link-title")
scores = containers.findAll("span", class_="score")
for title, score in zip(titles, scores):
title = title.text
score = score.text.strip()
score = float(score if score != 'N/A' else '0') # 無評価(N/A)は0.0
yield score, title
def show_ranking(score_titles):
ranking = sorted(score_titles, reverse=True)
for rank, (score, title) in enumerate(ranking, 1):
line = ' {:<2} {:<60} {:<3}'.format(rank, title, score)
print(line)
if __name__ == '__main__':
show_ranking(download())
1位 モブサイコ100 二期
1位 約束のネバーランド (2位と書いてあるが同率1位)
3位 盾の勇者の成り上がり
4位 どろろ
5位 かぐや様は告らせたい
結果、小点数第2位まで表しているのにも関わらず、なんとモブサイコ100の2期と約束のネバーランドが、同点になりました!1位であった「バーチャルさんはみている」は36位へ(好きな人、侮辱しているわけではないです。すみません。)
その他のアニメもかなり違う結果となりました。(ちなみに転スラ等、前から続いているアニメは入っていません。評価が無かったアニメも0点としています。)
他にも同点が2つあり、「五等分の花嫁」と「ドメスティックな彼女」は0.03の違いでかなり近い結果となりました。
勿論、このランキングは殆ど外国人が付けているので、「日本人だけに通じるネタは外国人には分からない」など懸念も多々ありますが、アニメを多く見ている人なら、このランキングを見て納得する方も多いのではないでしょうか。
これだったら、一、二話での評価をサクッと見て、人気が無いアニメを捨てて人気が高いものに絞って見ることができます。