見出し画像

未経験からデータサイエンティストへの道Day2. スクレイピング(2)

皆さん、こんにちは!Haedam workoutのへダムです。
こちらでは、先日の引き続き、未経験からデータサイエンティストになるため、私が分析を行った日記を記録しております。
未経験者の目線から、一つ一つ学んでいくステップが、データサイエンティストにチャレンジする他の方に少しでもためになればと思います!

1. (テーマ)複数のページからスクレイピング

 前回の記事Day1では、ヤフーニュースにて、ニュースの1ページのタイトルだけを集めてみました。

 ただし、1ページのタイトル取得なら、実際コピペでもできるので(その方が何なら早い)、実務では全く意味なくなります。
 その量が多ければ多いほど、pythonでの実装が意味があるため、今回は複数のページからタイトルを取得してみたいと思います。

2. (利用例)この実装どこで使うの?

 前回も例に挙げた通、
「ECサイトで自社の商品レビュー(口コミ)何百件以上集めて、その傾向がポジティブなのか、ネガティブなのかを見るとき」
しか、今のところでは私の頭の中では浮かびませんでした。自然言語処理についてもう少し深く学ぶとより様々な選択肢が見えてくるのかなと思います。

3. (実装level2) 複数ページからタイトル取得

Step1. まずは1つのページからタイトル取得

まずは、前回と同様一つのページからレビュータイトルを集めてみました。

アマゾンでこのようなレビュータイトルを取得してみます。
実装の様子①1ページタイトルだけを取得

 あれ?なんか集めてはくれたのですが、何故か6件程度しか集めてくれませんでした。なんで?と思ったら、

次のページがあった、、

 1ページ内で全てを表示してくれてはなかったのです。
なるほど、確かに、どのサイトでも1ページにレビューの全部を表示するところはないですね。
 そうしますと、次のページも、その次もpythonで取得できるような何かが必要ですね。

Step2. 複数のページからスクレイピングするためには

 複数のページを取得するためには、まず、各ページを分けるurlにどんな違いがあるかを確認し、全ページ分のurlを取得する必要があります。ここで、アマゾンの2ページ目のurlをみると、

https://www.amazon.co.jp/(中略)=all_reviews&pageNumber=2

なるほど!最後にpageNumberの数字がページが変わるにつれて、1,2,3のように増えていくことが分かりました。
 ここで、商品ごとに何ページまであるかが分かるコードまで書きたかったのですが、そこは自分の能力ではどうもできんかったため、一旦50ページまでのurlを取得し、それぞれのurlに対し、スクレイピングを行う関数を作成することにしました。
 コードは色々調べましたが、初心者レベルに合うよう、以下の通りでやりました。

50ページまでのurlを単純にfor文を使い、list化しました。

 コードは全く大したことがなく、base_urlには、
base_url="https://www.amazon.co.jp/(中略)=all_reviews&pageNumber="
を入れ、for文で1から50までのページのurlをリストに入れただけになります。

Step3. 各urlごとにスクレイピングする関数の作成

 さて、次の課題ですが(実はここまで来るのに3日はかかりました)、ページが複数になりましたので、スクレイピングも複数回行う必要がありますね。ここで、スクレイピングを行う関数を作成し、for文で複数回スクレイピングをしてみたいと思います。
 実は私、関数がすごく苦手でして、ついに来たか、、、って感じです。
早速コードを書いてみました。

ページ内のレビューのタイトルだけを集める関数

ここで、3日ぐらい苦労したところがまた出てきますが、一番難しかったところは、Find_allを使う際に、
どうやって目標のタグの属性の要素だけを抽出できるのか
というところでした。
 私がやった方法は
①まず、ページ内で、レビューが入った箱を全部集める
②箱の中で、またタグとclassまで指定する
③そこで最後にtextを抽出する
という流れでやっと、レビューのタイトルだけを取り出すことができました。
 もっと効率的な方法もありそうですが、箱を探すことにより、レビュータイトルと将来には、その内容まで自然言語処理ができるかと思い、箱から探す方法にしました。
 その結果!!何とか、レビュータイトルだけ集めることができました!!

初めて自力で集めた商品レビュー

4.まとめ、および今後の課題

 以上で、今回は、「一つの製品内で、複数のレビューページからレビューを集めること」が可能になりました。
 感想として、ここまで来るだけで1週間もかかってしまったのか!と思いましたが、このように流れを自分で考え、分からないところはgoogleで探しながら、実装していくことで、やっとコーディングが自分のものになることが分かりました。
 コーティング方法は一つだけでないため、自分でできることでコツコツ積み上げていきたいと思います!

 最後に、次の課題は、やっと、集めたデータをクレンジングし、自然言語処理により、ネガポジ分析に繋げてみたいと思います!
 未経験からのデータサイエンティストを目指す皆さん、一緒に頑張りましょう!!

この記事が気に入ったらサポートをしてみませんか?