Python(パイソン)講座、第9回目です。
前回は正規表現について紹介しました。
今回は Webスクレイピングについて。
それでは見ていきましょう。
Webスクレイピングとは
一般的にインターネットから情報を収集する場合、ブラウザを使うわけですが。
Webスクレイピングは、プログラムを使って、Webからコンテンツをダウンロードして処理します。
インターネット上の膨大なデータを機械的に効率良く集めることができます。
Webスクレイピングする場合の注意点
Webサービスの中には、Webスクレイピングが禁止されているものもあります。
利用規約は必ず確認しましょう。
また、サーバーに過度な負担をかけるのも相手にとって非常に迷惑です。
法的に訴えられる場合もあるので、注意しましょう。
Webスクレイピングで注意する法律は、動産不法侵入、著作権法などが該当します。
また、利用目的にも注意が必要です。
基本的に情報解析、私的利用に限ります。
Webスクレイピングの基本的なフロー
Webスクレイピングを行う基本的なフロー(流れ)を紹介します。
- クローリングをして対象の Webページを取得する
- 取得した Webページをスクレイピングする
- スクレイピングして抽出したデータを整形し、保存もしくは表示する
Webスクレイピングが使われているサービス
実際に Webスクレイピングが使われているサービスを紹介します。
Googleは、多数の Webスクレイピングプログラムを使っています。
検索エンジン用に Webページの索引を作っています。
SmartNews
スマホアプリ、SmartNews です。
サクサクと話題の情報や知識を収集するのに便利なアプリです。
このアプリもスクレイピングが使われています。
Python で Webスクレイピングするには
実際に Python で Webスクレイピングするには、ライブラリを利用するのが一般的です。
よく利用される Requests と BeautifulSoup を紹介します。
Requests
インターネットからファイルや Webページをダウンロードするためのライブラリです(HTTPライブラリ)。
余談ですが、Python 付属のライブラリで urllib2 というものがありますが、Requests の方が使いやすいのでこちらを使うことをおすすめします。
BeautifulSoup
HTMLを解析するためのライブラリです。
ここでは、BeautifulSoup4(バージョン4)を使っていきます。
必要なライブラリをインストールする
インストールしていない場合は、コマンドプロンプト(もしくはパワーシェル)から pip を使ってインストールしましょう。
Requests をインストールする場合は。
python -m pip install requests
BeautifulSoup をインストールする場合は。
python -m pip install beautifulsoup4
とすれば良いでしょう。
Requests の使い方
実際に Requests を使ってみましょう。
import requests re = requests.get('取得したいサイトのURL') print(re.text)
こちらを実行すると取得したいサイトのページを GET して、テキストで表示されるはずです。
ただし、このコードは取得できなかった場合を想定されていません。
そういう場合は上の例で言うと。
re.status_code
などの値を調べて、正常な場合は 200 を返すはずなのでチェックするか。
re.raise_for_status()
という便利なメソッドがあり、これを使えば、ステータスコードが 200番代以外であれば、エラーになります。
BeautifulSoup の使い方
次に BeautifulSoup を使ってみましょう。
from bs4 import BeautifulSoup html = '<html><head></head><body><h1>BeautifulSoupとは</h1><h2>おいしいスープ</h2></body></html>' soup = BeautifulSoup(html, 'html.parser') print(soup.select('h2'))
実行結果は以下の通りです。
[<h2>おいしいスープ</h2>]
実際には Requests と組合わせて使うことで強力なツールとなります。
最後に
いかがでしょうか。
Webスクレイピングは非常に便利ですが、無知のまま利用すると危険な面もあります。
自分は意識していなくても相手に迷惑をかけてしまう場合などがそうでしょう。
嫌な想いをしないように十分注意して活用しましょう。
今回は個々のライブラリの紹介だけでしたが、次回は、Requests と BeautifulSoup を組み合わせて使っていこうと考えています。