小さな星がほらひとつ

かるろすの雑記ブログ

読書・プログラミング・留学から学んだことを紹介していくブログ

『スケベ博士』を作ってみよう!② CSVファイルの作成からスクレイピングのコーディング途中まで

f:id:Carlos10:20190430031141j:plain

 

最初に

こんにちは!かるろすです。

引き続き『スケベ博士』開発について書いていこうと思います!

この記事ではCSVファイルの作り方からスクレイピングのコーディングの途中まで。

コーディングの実行部分では列ごとに解説していきます。

 

第一弾はこちら。

このシリーズではProgateを終わらせた直後の文系プログラミング初心者が『スケベ博士』開発においてわからなかったところをすべて説明していきます。

carlos10.hatenablog.com

 

『スケベ博士』開発

CSVファイルの作り方

次のタスクは"default.csv"というCSVファイルを作る事。

 

<用語解説>

CSVファイル:"Comma Separatved Value"の略称

その名の通り値をカンマで区切ったファイルのこと。

 

ノートパッドで値をカンマで区切った後、CSVファイルで保存すれば作成する事ができます。

DaiさんのNoteを見ながら"default.csv"を作成。

後でこのCSVファイルをpandasで読み込むコードを書くのですが、その際にCSVファイルをプロジェクトファイルに入れていないといけません。

PyCharmProjectsというファイルの『スケベ博士』のプロジェクトファイルに入れれば大丈夫です。

C:\Users\Kazut\PycharmProjects\test2\HH

自分の場合はここにCSVファイルを移しました。

僕は『スケベ博士』を間違えて『ヘンタイ博士』だと思っていたので、プロジェクトの名前がHHになってます笑

 

f:id:Carlos10:20190430031938p:plain

こんな感じでPyCharmに表示されます。

このCSVファイルをエクセルで開くとこんな感じ。

f:id:Carlos10:20190430032028p:plain

今後Seleniumで集めた女優の名前と画像のURLを"name"と"image"の下に追加していきます。

 

アダルトサイトのCSSセレクター設定

では実際にコードを書いていきます。

 

<注意点>

コードを書くときは、少し書いてランしてを繰り返すことが大切だそうです。

書き終わってランするとエラーがどこにあるのかわからなくなるので。

 

最初はNoteに書いてある通り、seleniumとpandasをインポートし、クロームドライバーのPathを指定し、そしてPandasで”default.csv"を読み込み変数を与えます。

 

<注意点>

ここでNoteの通りに

df = pandas.read_csv("default.csv")と書くと

'can't find a csv file named "default.csv"'

というエラーが。

いろいろ調べてみると、default.csvのPathを全部書かないとダメでした。

f:id:Carlos10:20190430032139p:plain

こんな感じで指定してあげれば大丈夫です。

index_col = 0はindex列を指定するために使います。

詳しくはこちらの記事を読んでみてください。

note.nkmk.me

 

<注意点>

あとここの説明ではスキップされていたのですが、このもろもろの設定のところに

f:id:Carlos10:20190430032120p:plain

と書くのを忘れずに。

 

次にCSSセレクタの設定です。

 

<用語解説>

CSSセレクタHTMLの特定の要素を指定するもの

HTMLのどの部分に変更を加えるのか指定する。
CSSセレクタを設定することでウェブサイト上の特定の要素を指定できる。
例:<div id="">

saruwakakun.comこちらの記事に詳しく説明されているので参考までに。

では説明通り次へボタン、各女優のClass、女優の名前と画像の要素を選択して、変数を足していきます。


<注意点>

AVサイトを実際に開くことになるので部屋で行いましょう笑

 

スクレイピングの実行部分

ここから先は各列ごとに説明していきます。

Line 1:

<コード解説>

Len():文字列の文字数を返す関数

今回は

"Len(browser.find_elements_by_css_selector(..."

というコードになっています。

この場合は次へボタンのエレメントの数をリターンしてくれます。

>0とすることで、次へボタンがある限り以下の動作を繰り返せと指示します。

 

Line 2:

ただのプリント関数。

 

Line 3:

find_elements_by_css_selectorで女優divのエレメントを取ってきて変数を与えます。

 

Line 4:

Line 3でいくつのエレメントを取ってきたのかプリントします。

このエロサイトの場合、1ページにつき40の女優が載っていますので、40と帰ってくるはず。

 

Line 5:

forループを使って、各女優に対して以下の動作を行います。

 

Line 6: 

<コード解説>

try関数:エラーの対処方を指定する際に使う関数

Try:

Except:

Finally:

という構文になっています。

”try:”の後はエラーが発生するかもしれないが、実行したい動作を指定します。

"Except:”の後はエラーが発生した場合の動作を指定します。

”Finally:"ではエラーが発生しようがしまいが行う動作を指定します。

 

Line 6からLine 12まではTryブロックとなっています。 

 

さて、実行部分の途中ですが、Tryブロックの中身の説明以降は次の記事で説明したいと思います。

お読みいただきありがとうございました!