Pythonのスクレイピングライブラリの主流は、今は大きく二つのライブラリを使い分けます。
- Requests + BeautifulSoup
- Scrapy
- Selenium
Requests + BeautifulSoup
JavaScriptが使われていない静的なサイトであればこれでいけます。
ユースケース
- homesやsuumoなどのように不動産情報を取得したい場合など。
Requests
PythonでHTTP通信をするためのライブラリ。平たく言えば、HTMLを取得できるライブラリです。
また、WebページのURLだけでなくAPIにアクセスすることも可能です。
なお、Requestsは外部ライブラリなのでpip installが必要になります。(ただ、もしAnacondaを使用して開発をしている場合はデフォルトでRequestsは入っているのでインストールは不要です。)
urllibと比較してどうか?
urllibでもRequestsとほぼ同等のことが実現できます。本によってはRequestsではなくurllibが紹介されていたりします。
urllibに比べてRequestsの方がより簡潔に記述することができます。
ただ、urllibはPythonの標準ライブラリでpip installが不要なのが利点になります。(もしAnacondaを使っておらず、pip installできない環境であればurllibの方が良いかと思います。)
BeautifulSoup
Requestsで取得したHTMLを解析できるライブラリです。
Scrapy
「Requests + BeautifulSoup」に代わるフレームワークとも言われます。「Requests + BeautifulSoup」だと別々のライブラリが必要ですが、「Scrapy」ならこれ一つカバーできます。それだけでなくそれらを上回る機能も存在します。
また、JavaScriptを使っているサイトであれば「scrapy-selenium」というライブラリを別途使う必要があります。
Selenium
JavaScriptが使われているような難しいWebサイトから情報を取得したい場合はこれを使います。
具体的に言えば、最近は無限スクロール(初期レンダリングで全てのデータが描画されず、スクロールするたびに描画されていく方式)のサイトが多いです。そうした無限スクロールにはJavaScriptの技術が使われておりどうしても静的なDOM操作だけでは対応できません。自動DOM操作を再現できるSeleniumでの実装なら実現が可能です。
Selenium自体はPython独自のものではなく専用ツールがあるのでPythonのSeleniumのクライアントライブラリとは別にツールを用意する必要があります。
あとは、実際のブラウザで操作するので動作が遅いことが難点です。
ユースケース
- 気象庁のホームページなどで動的にデータが表示されているようなサイトから情報を取得したい場合
- 他にはyahoo画像検索などのように画像データを取得したい場合
データ保存用のライブラリ
Pandas
CSVなどに保存したい場合はこれを使います。Pythonにおいてはスクレピングの分野だけではなく、データサイエンス(データ分析)の分野などでも度々登場してくる利用頻度が高いライブラリです。
os
PCにスクレイピングした画像などを保存したい場合に使います。保存そのものよりも保存用のフォルダを作成したりする場合に使います。
ちなみに、外部ライブラリではなく(pipなどでインストールする物ではない)Python組み込みのライブラリです。
この記事へのコメントはありません。