mono.log(e)

旅とバイクとプログラミング

【python】スクレイピングでエロ動画のタグを集めてみた

pythonを始めてから、気が向いたときに軽く調べてjupyter notebookを触る、というサイクルを経ることはや数年。本腰をいれて勉強したいと思いたち、今流行りのオンライン学習に手を出してみたので備忘録も兼ねてちょっと報告してみる。ついでにブログデビューもしてみる。

目次

Udemyで購入したコース

セールのときに以下のコースを1,400円で購入した。なかなかボリュームがあるので、ひたすら写経するだけでも結構一苦労。一週間かけて、仕事終わりに近くのエクセルシオールカフェで一通り学習した。目的のWebスクレイピング講座自体は付録にある。

今回は学んだことをもとに簡単なコードを書いてみたので、備忘録兼ねてアウトプットしてみる。

www.udemy.com

実装

目的:タグを自動で集める

本題であるが、学んだスクレイピングで何かがしたい。シンプルにニュース記事をスクレイピングするのでも良かったが、ここは一つ、いつもお世話になっているサイトに再びお世話になることにした。無論、真面目な理由である。

さて書いてみたコードであるが、試行錯誤の末、以下の形に落ち着いた。プログラミングは初心者レベルなので、汚いコードであることはご容赦いただきたい。

もっと良くかけるよ!というのがあればぜひ教えてほしい。

df = pd.DataFrame()
tag_list = {}
for data in np.arange(220000,225780):
    url1 = "https://masutabe.info/video/" + str(data) + "/"
    #print(url1)
    result1 = requests.get(url1)
    c1 = result1.content
    soup1 = BeautifulSoup(c1)
    summary1 = soup1.find("ul", {"class":"tag_list"})
    #if summary.find("a") != None:
    tag_list[data] = []
    if summary1 != None:
        tags1 = summary1.find_all("a")
        for i in tags1:
            #print(i.string)
            tag_list[data].append(i.string)
    else:
        pass
        #print("urlが見つかりません")
    df = df.append(pd.DataFrame(tag_list[data]))
print("完了しました。")

1サイクル回すのに、体感1秒程度かかるので、np.arrange(220000, 225780)とあるように約5,000ページ分のタグを収集してみた。

得られたdfを以下のコードで修正。

df_r = df.reset_index(drop=True)
stat = pd.DataFrame(df_r[0].value_counts())
stat_r = stat.reset_index()
stat_r.columns = ["tag", "counts"]
stat_r

結果はこんな感じ。

f:id:yo-cchans3:20190323115628p:plain:w300

モロが一番タグ付けされていると思っていたから、この結果は少し意外だった。サンプル数が5,000程度であるものの、動画主の好みがわかる。

まとめ

20行そこそこのコードだが、今まで学習してきたpythonの文法を思い出したり、いろいろ調べたりと、思いの外時間がかかった。Udemyの動画を写経する → なにかアウトプットしてみる、というサイクルはプログラミングを学ぶ上で、とても勉強になった。今後も、少しづつできることを増やしていきたいと思う。

Udemyは月イチぐらいで90%オフセールを行っているので、そのタイミングで気になっているコースを購入するのがおすすめ。

www.udemy.com