2019-04-24SHAREツイートシェアはてブLINEPocketこんにちは、ともろう(@tomorrowSLog)です。今回FANZA動画サイト(旧DMM.R18)よりAV女優約1万人分の名前と画像をpythonを使ってスクレイピングしたのでその流れを書いていき、実際に動かしたコードを読んでいきたいと思います。【ChromeDriver】python3でgoogle検索を自動化するはじめにAV女優をwebスクレイピングしたきっかけ過去にはこんな記事を書いております。2018年12月15日きっかけはスケベサイエンティストで有名なDAIさん(@never_be_a_pm)のこのツイート。ともろうそういやこれやってみようと思ってた以前見かけて面白そうだと思っていてその時は手をつけられなかったDAIさんの記事がtwitterで流れてきました。最近webスクレイピングの勉強をはじめたばかりで実践にちょうどいいと思い挑戦してみました。ちなみにDAIさんはpythonやwebスクレイピング、APIをうまく使って初心者にもわかりやすいロードマップをたくさん公開されています。ともろうこんなものが作れるんだといった学びがたくさんあって、技術を学んだ後の実践にとても役に立ちます。その記事がとても丁寧でわかりやすいです。ブログの記事をCSVにエクスポートするnote.muこの記事でできるようになることpythonを使ってweb上の大量のデータを自動でスクレイピングできるようになります。この記事の発展としてスクレイピングしたデータをもとにデータサイエンティスト的な情報分析をしたり、取得した画像を機械学習のデータにしたり、webアプリを作るのに利用したりすることができます。3.7.1Macでのpython3環境構築はこちらの記事をどうぞ。anacondaやpyenvを使わずmacにpython環境を構築しています。今回扱うseleniumの簡単な使い方を書いています。AV女優をスクレイピングDAIさんの記事を丸写して動かすのも悪くはないと思いますが、今回は実践ということで流れだけ見ながら自分でコードを組んでいきます。ロードマップFANZA動画のAV女優一覧からAV女優の情報をスクレイピングします。名前が「あ」から始まるAV女優の1ページ目からAV女優の画像リンクと名前を取得データフレームに格納1~4を「あ」から「わ」まで繰り返す取得データをcsvに出力コード全文あまり綺麗なコードではないですが、動かすことを重視しました。結果抜け漏れなくデータを取得できたのでよかったのかなと思います。pd.DataFrame(data)必要なモジュールをimportして、取得データを入れる箱を作っています。'w']urlとwebdriverの準備です。next_keyはAV女優の人数を取得する際に使うcssセレクタになっています。ともろう最初は次へボタンをクリックしてページ遷移をするつもりだったのですが断念した名残でnext_keyです笑boinsとsiinsのリストの組み合わせで50音を作ります。-(-int(list(map(str,ninzu.split("\u3000")))[0][0:-2])//100)chromeドライバを開いてデータを取得して格納するというところを関数化したfunction関数を作りました。関数化の理由は後ほど書きます。1ページ目を表示」このような形の文字列になるので欲しい値(1074人中の1074の部分)にうまく整形します。ロードマップ1の部分の変数num。取得したい値を整形して数字を取り出し、1ページに表示される100人で割って切り上げ。int(list(map(str,ninzu.split(“\u3000”)))[2][1:-len(ninzu.split(“\u3000”)))[2])+3])みたいな感じ。どちらにせよ長いコードになるのでもっとわかりやすく書けよと言いたいです。dfChromeを開いて欲しいimgタグをリスト化します。画像と名前を取得し、データフレームに格納。セレクター操作とかはこの記事で軽く扱っています。df=function(df)df.to_csv("output.csv")driver.quit()母音と子音を組み合わせて50音を作っていましたがこれでは”yi”や”wu”などの使わない値が出てきます。この値でurlを検索すると名前が「あ」から始まるAV女優が出てきてしまい、データ重複を起こしてしまいます。それに対策するため子音で’y’と’w’が出た時は例外操作をします。これをするにあたってfunction関数を作りました。最後にcsvを”output.csv”という名前で出力してChromeを閉じます。結果fanzaからAV女優約1万人分の名前と写真をクローリングまで完了。ついでにgasで関数を作ってdmmAPIに投げる前の軽いデータ整理をした。ブログにまとめて、dmmAPIを扱ってみます。2018年12月19日AV女優9763人分の名前と画像がスクレイピングできました。まとめスクレイピングの実践としてちょうどいい難度だったブログにまとめる中で自分のコードを振り返れてよかったもっと可動性の高いコードを書きたいAV女優10,000人もいることに驚きこれからの流れとして今回得られたデータをうまく使ってAVライフをエンジョイGASでのデータ編集やAPIを使ったデータ取得、機械学習の勉強へ活かしていけたらと思います。コメントをキャンセルメールアドレスが公開されることはありません。