スクレイピングをしたいと思い Python のライブラリーを調べてみると、次の3つがメジャーらしいので特徴を調べてみました。
- Beautiful Soup (+ Requests)
- Selenium
- Scrapy
Beautiful Soup (+ Requests)
Beautiful Soup は HTML や XML データを読み込んで、指定する値を抽出するライブラリーです。そのため、ウェブページをスクレイピングするには、HTML データを読み込む Requests と合わせて使用します。
通常のウェブページから HTML データを取得するのであれば手軽ですが、ログインが必要なウェブページの場合は HTTP ヘッダーをコントロールする必要があるので、Requests をしっかり理解する必要があります。
HTML データさえ取得できれば、値の抽出に CSS セレクターの文法が使えるので、CSS に馴染みがあれば簡単に使えそうです。
Selenium
Selenium はウェブブラウザーを Python で操作するためのライブラリーです。そのため、HTML データの取得だけでなく JavaScript の実行やスクリーンキャプチャーもできます。
Selenium を使うためには、Python を実行する OS にウェブブラウザーとそのウェブブラウザーに合わせたドライバーがインストールされている必要があります。アプリやライブラリーのインストールができないレンタルサーバーなどでは実行環境が構築できません。
HTML データから値を抽出するときは XPath を使用します。
Scrapy
Scrapy は複数のページを計画的にスクレイピングするときに向いています。HTML の取得を担う Spider や取得後の値の抽出を担う Items、値の抽出後の処理を担う Pipline と手順や機能がしっかり分かれていて、理解してしまえば非常に強力です。
HTML データから値を抽出するときは CSS セレクターを使用します。
まとめ
Beautiful Soup (+ Requests) | Selenium | Scrapy | |
インストール | pip | バイナリー + pip | pip |
JavaScript | X | O | X |
値の抽出 | CSS セレクター | XPath | CSS セレクター |
スケジュール | X | X | O |
コメントする