Pythonを使ったスクレイピング


スクレイピングとは、ざっくり言えばウェブページからの情報抽出です。
例えば、あるウェブサイトに掲載されているデータを、CSV等で自分なりに保存したいとします。

データが少ない場合は良いのですが、何千件とデータが存在する場合、手作業では非常に時間がかかるのは言うまでもありません。
また、沢山のサイトから情報を取得する必要があったり、定期的に保存が必要になった場合なども、人力では大変です。

このような場合に活躍するのがスクレイピングです。

スクレイピングには大まかに、2つの方法があります。
・Chrome等のウェブブラウザを立ち上げ、プログラムでその動きを自動化・制御する
・ウェブブラウザを使わず、プログラムのみでHTMLの取得・解析を行う

ウェブブラウザを使わない方法として簡単なものは、「requests」と「BeautifulSoup」を使う方法です。
流れとしては、
・requestsでサーバへリクエストを送り、HTMLを受け取る
・BeautifulSoupでHTMLを解析し、必要な部分だけ抽出する
という流れになります。

それぞれのライブラリは、以下のようにインストール可能です。

例として、Python Japanのサイトからニュースを抽出してみましょう。
pythonjapan

実行結果

このように、非常に簡単に抽出ができました。

次はウェブブラウザを立ち上げる方法、「Selenium」を使ってみます。

Seleniumのインストールも、pipで簡単に行えます。

上記のコードを実行すると、実際にFirefoxブラウザが立ち上がり、ニュースのタイトルを表示し終わるとブラウザが閉じます。
次に、これらの使い分けについてです。

requestsで受け取るHTMLはあくまでHTMLのソースである点に注意です。
そのためJavaScriptで動的にHTMLを変えているページでは思うように抽出ができません。
ですが、Pythonプログラムのみで完結するため、非常に動作は速いです。

一方、Seleniumはブラウザを立ち上げるため、JavaScriptで動的にHTMLを変えていても、対応可能です。
また、スクリーンショット機能やHTMLの読み込みを待つといった便利な機能もあります。
ブラウザの動きをリアルタイムで見れるため、バグ等の発見も容易です。
しかし、実効速度はブラウザを使わない方法に比べると遅くなります。

どちらを使うか悩む場合は、まずrequests+BeautifulSoup等を試し、上手く抽出ができなければSeleniumに切り替える、
といった方法でも良いでしょう。


関連記事一覧

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

we love develop
アプリやシステムの開発を通じて、お客様のビジネスを成長させることが私たちのビジネスです。お気軽にお問い合わせください。
 お問い合せ

お電話でのお問い合わせはこちらから
TEL:03-5297-2871

メールマガジンの登録

キャパでは誰かに話したくなるようなIT小ネタを、週に一回メルマガで配信しています。
ぜひ購読してみませんか?
 購読する

ホワイトペーパーの入手

ITブログ月間20万PV達成!自社オウンドメディアの運用ノウハウを無料公開しています。
 ダウンロード

記事カテゴリ記事カテゴリ

月別投稿記事

PAGE TOP