Kの備忘録(仮)

Python、VBA、Excelを中心に記事を投稿

Python スクレイピングとは? 概要と注意点

スクレイピングとは?

一言でいえば、「Webページから必要な情報を抜き出すこと」です。
例えば、「気象庁から東京の1か月分の最高気温と最低気温を取得する」ということが可能です。

スクレイピングPythonが得意なことの一つ です。
なぜなら、そのままPythonを使ってデータの解析もできるからです。

また、スクレイピングと混同されやすい言葉で「クローリング」があります。
違いを簡単に説明すると、以下のようになります。

スクレイピング
 Webページから一回情報をダウンロードして、そこから必要な情報を抜き出す作業
 (スクレイプ=削り取る、かき集めるの意味)
▪クローリング
 Webページのハイパーリンクをたどって次々にWebページをダウンロードする作業
 (クローラ=這うの意味。)

今回は、スクレイピングについて、仕組みや注意点を説明します。

◆目次◆

スクレイピングの仕組み

 スクレイピングは以下のような流れで行います。
  1. WebサーバーにURLをリクエストする
  2. Webサーバーからレスポンスを受け取る
  3. 受け取ったレスポンスから必要な部分を抜き出す

 1と2はの部分を「HTTP通信」といい、
 pythonでは「requestsモジュール」を使用して行います。

 3の部分は「HTML解析」といい
 pythonでは「beautifulsoup4モジュール」を使用して行います。

 ※各モジュールについては、別の記事で説明します。

 例えば、
 「Yahoo Japan!のトップページをリクエストして、レスポンスを受け取る」を
 絵にすると以下のようになります。
 ※スクレイピングの説明のため
  あえて「リクエスト」「レスポンス」という言葉を使っていますが
  簡単に言うと、ブラウザにYahoo Japan!のトップページのURLを入力して
  Yahoo Japan!のトップページを表示させただけです
f:id:lbibouroku:20210525194704p:plain

スクレイピングの注意点

 ・利用条件の確認する(ログインが必要なサイトは、ログインに関する規約を確認する)
 ・著作権で保護されたコンテンツを商用利用しない
 ・サーバーに負荷がかかる行為は禁止(業務妨害となる場合もある)

 もしもスクレイピングしてもいいのかわからない場合は、
 サイト責任者へ相談してください。
 許可を得て、常識の範囲内でスクレイピングを行えば、問題ありません。

スクレイピングが禁止されている代表的なサイト

 ・Twitter
 ・Facebook
 ・Instagram
 ・amazon
 ・Yahoo!ファイナンス
  など

 ただし、スクレイピングが禁止されていても、
 「公開APIを使用しての情報の取得」は許可されています。
 APIとは、
 「ソフトウェアの機能を一部を公開して、その機能を第三者が使用できる仕組み」
 です。

 2021年5月現在、上記のうち「Yahoo!ファイナンス」以外はAPIが存在します。
 (Yahoo!ファイナンスAPIは残念ながら、
  公式では2017年に廃止となってしまったようです・・・。)

 調べたいサイトでスクレイピングが禁止されている場合は、
 APIが公開されているか確認してみてください。