こんにちは。
勉強しなくちゃいけないのにこんなことしてしまっているやらしみずです。
ほんとに何てんだろう。。。。
日本アニメをすべて見るには、、?
気になりませんか!?
日本中のアニメをすべて見切るために、私達はどのくらいの時間を費やせばいいのか。
というわけで、おそらく自分史上もっともくだらないことにプログラミング技術使いたいと思います。
今回の目的
・スクレイピングで遊ぶ
・日本のアニメの話数を計算
・計算した作品数からおよその視聴時間を算出する
スクレイピング
スクレイピングで日本に存在するすべてのアニメのタイトルと話数を取得します。
今回はWikipediaのこのページにあるアニメたちを対象にして計算を行っていきたいとおもいます。
開発に必要なもの
パソコン:Mac
言語:Python3
ライブラリ:urllib、BeautifulSoup、csv
一応ライブラリの解説
urllib:URLにアクセスする
BeautifulSoup:アクセスして取得したファイルを開く
csv:csvファイルとして扱う
準備とエラー
先程あげたライブラリをインストールします。
1 2 |
$pip install urllib3 $pip install BeautifulSoup |
無事にインストール出来た場合は無視して大丈夫ですが、私は次のようなエラーが出てしまったので一応補足。
エラー1
pip installを行った際に、下記のエラーが出てきてしまいました。
1 |
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/rx/d7gf5q5927g92nr0586k6vxr0000gn/T/pip-install-reack3lv/BeautifulSoup/ |
説明に関しては参考サイトを見てもらうとして、解決するためには
1 2 3 |
$pip install ez-setup $git clone https://github.com/Zulko/unroll $pip install ./unroll |
で大丈夫、、なはず。
エラー2
unrollインストール出来たから行けるかなぁと思ったら、更に次のエラーが出てきました。
1 |
Cannot uninstall 'imageio'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. |
なんかアンインストールできないって言ってる。。。
じゃあ手動でアンインストール
pipでインストールしてた場合
1 |
$pip uninstall imageio |
アナコンダでインストールした場合
1 |
$conda remove imageio |
そして再度インストールしてみたところしっかりと出来たので、コーディングをしていきましょう。
コーディング
※なぜでしょうか、仕事をしているときより手がさくさく動いてくれます。くだらないことするの超楽しい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# coding: UTF-8 import csv from urllib.request import urlopen from bs4 import BeautifulSoup # アクセスするURL url = "https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%83%86%E3%83%AC%E3%83%93%E3%82%A2%E3%83%8B%E3%83%A1%E4%BD%9C%E5%93%81%E4%B8%80%E8%A6%A7_(1950%E5%B9%B4%E4%BB%A3-1960%E5%B9%B4%E4%BB%A3)" # URLに書いてある全htmlを取得する html = urlopen(url) # htmlをBeautifulSoupで扱う準備 soup = BeautifulSoup(html, "html.parser") # 取得したいテーブルのclassを指定して取得 今回はwikitable tables = soup.findAll("table",{"class":"wikitable"}) # 一応コマンドラインにも出力する いらなかったら消して大丈夫 print(tables) # 取得したデータを保管するためのcsvファイルを開ける csvFile = open("anime_all_a.csv", 'wt', encoding = 'utf-8') writer = csv.writer(csvFile) # テーブルの中にあるtdタグをひたすらとっていく try: for table in tables: csvRow = [] for cell in table.findAll(['td']): csvRow.append(cell.get_text()) writer.writerow(csvRow) finally: csvFile.close() |
Wikipediaからどうやって情報をとってくるかはコメントの欄にいろいろ書いてあるのでそちらを見てください。
総時間を計算!!
そして実際に動作させてみてデータを取得してみるとこんな感じ。
何故か余計な「”」が先頭に入ってしまっているデータが多数有りますが、私は早く総時間が知りたいのでそのへんは手で直してしまいます!笑
あとでGitHubに上げるときにはちゃんとしたコードにする、、、つもりです!!
1 |
$python get_data.py |
かっこいいイケメンのお兄さんならすべての年代についてアクセスするところも自動化してやってしまうのでしょうが、私はとにかく総時間が知りたいだけなので細かいところはもう手で行きます。
SublimeTextで余計な「”」とか「[注● ●●]」とかをすべて置換した後に、一番うしろの列にある話数をNumbersのSUM関数で出して上げると、、、
結論
日本中のアニメをすべて見るために必要な時間は62407時間
そして
1日3時間視聴するなら20,802日 = 57年
1日8時間視聴するなら7,801日 = 21年
1日16時間視聴するなら3,900日 = 11年
1日24時間視聴するなら2,600日 = 7年
更に、、、
先程出た結論の方は、2019年2月22日現在の合計です。
しかもWikipediaの方に載っていない、まだ放送中のアニメは含まれていないので、更に増えます。
更に更に、もちろんアニメはどんどん生み出されているので、それも増えていきます。
1年間に放送されるアニメの合計時間はおよそ2031時間(2015~2018年の平均値:4062.25話)
つまり、日本のすべてのアニメを見尽くすためには、1年間に2031時間(1日5時間ちょい)アニメを見つつ、先程あげたノルマをクリアしなくてはいけません。。。。。。
私も4倍速でアニメを見れるのでなんとか全アニメ見れると勝手におもってましたが、、、、
ちょっと人類には早すぎましたね、、、、
最後に
コレを初めたきっかけは、なんとなく自分の知っているアニメの総数を調べている時にふと「日本中のアニメをすべてみたい!」と思ってしまったことから始まります。
数えていたときのリスト
そしてUdemyで学習をしたスクレイピングの技術、仕事でどうせ全く使わないしなにかに使いたいと思っていたので今回のようなことになりました。
※私が受講したコースはこちら
きっともっと頭のいいエンジニアの方だったらリアルタイムで必要な時間(日本アニメの総時間)を計算してくれるプログラムを組んでサイトに表示とかできるのでしょうが、私には無理なのでここまでです。
もし来年のこの時期に誰も作っていなかった場合には、再度僕の方でスクレイピングをしてその年の時点で何時間必要かを計算して記事にしたいと思います。
もちろん自分でやってみたい方はやってみてください。
このコードを使って記事を作ろうが何しようが僕は特に気にしませんので笑
まぁ書いた記事を教えてもらって読んで見たいのでURLだけ教えてほしいですが笑
またくだらねぇこと思いついたらコード書きます!では。。。
コメント