今回ある目的のためにとあるサイトをスクレイピングすることにしました。
スクレイピングに関する情報はネット上にも多くあり調べやすくはありましたが、なかなか自分が実装したいことと関係しているのか判別ができるほどの知識がないことで苦労しました。
スクレイピングは初心者が挑戦するには難易度が高いものだと素直に感じました。なぜならネット上で転がっている初心者向けの記事は理解するのも難しいし、その知識を使って自分が対象としているサイトでそれを実行できるとは限らないからです。特にスクレイピングに関して自分が実現したい理想的なことと自分の知識量のなさによる現実の制約との間でギャップがかなりあります。
実際にやってみたことでスクレイピングを実行する上で知っておいてほしい必要なことを自分みたいな初心者の人のためにも共有したいと思います。
-
Pythonの文法知識を抑える:
スクレイピングを行う上でいろいろな言語がありますが、解説の情報量からパイソンをお勧めします。そのうえでパイソンに関する基本的な文法知識に関してはmustで抑えてほしいです。これができないと正直何も手を付けることができません。 -
requestsを使えるようになる:
スクレイピングを行う上でこのrequestsは非常に重要なものとなっております。スクレイピングしたい対象のデータを取得する必要がありますが、そのときにこのrequestsを使うことでhtmlからエンコードとデコードの作業をします。これをしないと実際に使える情報にならないのですが、その理由を詳しく知るにはバイト列といった知識も必要となっていますが、これはあくまで補足的なものです。とにかくまずこのrequestsを最初に行うということを認識してくれたらいいです。 -
html、cssに関する基本書を読む:
個人的にはこのhtml,cssの勉強もしてほしいと考えています。なぜなら自分が抽出したいと思っている情報がなんなのかによって取りうるスクレイピングの手段が変わってくるからです。今回自分が抽出したい情報のタグがtdでした。当初はseleniumやbs4を使う予定でしたが、このタグで調べてみるとpandasを使う方法が一番楽だと知ることができました。このように自分が実現したいものによって何を勉強すべきかが変わってきます。それらを判断するためにも基本書を読んでおくといいと思います。 -
スクレイピングの対象サイトが静的か:
動的の場合seleniumやbs4に関する勉強をする必要があります。しかしもし静的ならこれらを勉強しなくてもスクレイピングを実行できる可能性はあります。
初心者の場合は簡単な静的なサイトで、かつ1ページと限られたページから特定の情報を抽出してみるというスクレイピングを経験してみるといいと思います。そこから複数ページにまたがる動的なサイトから抽出するというように難易度を上げていくのがいいと個人的に思いました。
スクレイピングは難しいと思いますが、最終的に実装できたので自信をつけることができてよかったです。