Python でスクレイピング比較

Python

スクレイピングをしたいと思い 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)
SeleniumScrapy
インストールpipバイナリー + pippip
JavaScriptXOX
値の抽出CSS セレクターXPathCSS セレクター
スケジュールXXO
Python スクレイピング まとめ

Comments

コメントする