【Python】Webサイトやアプリケーションにある情報を利用する(API)

プロモーションが含まれています。

スポンサーリンク
サムネイル Python/MicroPython

Webサイトの情報や既存アプリケーションのデータにアクセスして、自分が書いたプログラムに活用することができます。(本記事では、WebサイトのAPIのみで、アプリケーションについては書いていません。)

スポンサーリンク

APIとは

データのやり取りをするインターフェースをAPI(Application Programming Interface)と言います。

Webサイト側も、サイトの認知や地位の向上などを目的に、利用側がデータを受け取り使いやすいように配慮してサイトを作っています。

インターネットでは、天気予報やAmazonのデータなどを取得することができ、アプリケーションでは、エクセルなどにアクセスすることができます。APIはネット上に無料で一般公開していたり、有償公開だったり、利用者情報を登録しないと情報を得られなかったり様々です。

スポンサーリンク

気象情報取得(準備)

今回は、気象情報を取得してみます。

情報取得先

気象庁のサイトで一般公開されていて、データ取得できます。が、取得方法やアドレスなど詳しいことは書かれていません。(あるかもしれませんが、見つけることができませんでした。)

簡単に説明しているサイト(あんこエデュケーション)がありますので参考にしてください。リンク先の内容を読んでもらえばわかりますが、気象庁から取得できるデータはJSONという文字列情報になります。

JSONとは

データのやり取りをする上で、授受しやすいようにシンプルな文字だけで並べられたデータがJSON(JavaScript Object Notation)です。簡単に言うと、軽量なデータ交換フォーマットです。JSONは、コードでもなければ、プログラムでもありません。

JSONで書かれたデータは、標準ライブラリのjsonモジュールをインポートしてプログラミングすることで、pythonで使えるようになります。

まずは、気象庁(天気予報/東京/JSON)を開いてみてください。( )や{ }、[ ]などの括弧と ” ” ダブルコーテーション、:コロンなどが使われていることが分かると思います。ぱっと見、pythonの辞書型データに似ています。

Pythonの標準ライブラリにJSONがあって、importすることでJSONのデータを扱うこと(エンコーダやデコードなど)ができます。

外部ライブラリをインストール

まずはPyPIにある、外部ライブラリ「requests」をインストールします。今回は、Thonnyを使って確認していきます。requestsをインストールすることで、HPPT/1.1を簡単にリクエストすることができます。Windowsのコマンドプロンプトを使用する場合は、「py -m pip install pytz」になります。

【記事】外部ライブラリのインストール方法

pip install requests

スポンサーリンク

動作確認

アクセスする頻度と回数に注意してください。プログラム内容、デバイスの速度にもよりますが、カウントするプログラムを作って1秒間計測すると、1秒間に1800万回以上処理することができます。

同じような形でサイトに対して高頻度のアクセスをすると、サイバー攻撃とみなされかねません。相手サイトがどのような対処をするかにもよりますが、プログラムには十分に注意してください。

動作確認には、Thonnyを使います。

取得したデータを全て表示

気象庁のデータを取得して、取得したデータをそのまま表示させてみます。

import requests
r = requests.get('https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json')

print(r.text)

プログラムを実行すると、シェルの部分に赤枠で囲ったような結果が表示されます。

赤枠をクリックすると下のようなウィンドウが表示されます。(とても重いです。)

表示されているデータ形式がJSONです。

必要なデータのみを表示

取得したデータの中にある必要なものだけをピックアップして表示させてみます。追加になったのは、JSONの取り扱いになります。

import requests
import json

r = requests.get('https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json')
rjson_data = r.json()
region_name = rjson_data[0]["timeSeries"][0]["areas"][0]["area"]["name"]
today_weather = rjson_data[0]["timeSeries"][0]["areas"][0]["weathers"][0]

print(region_name)
print(today_weather)

下記のように表示されます。

東京地方
晴れ 夜 くもり

JSONデータのピックアップ

rjson_data = r.json()
region_name = rjson_data[0]["timeSeries"][0]["areas"][0]["area"]["name"]
today_weather = rjson_data[0]["timeSeries"][0]["areas"][0]["weathers"][0]

プログラムのメインは、照会先の気象庁が提供しているデータ(JSON)から、必要なデータをピックアップの仕方になると思います。簡単に説明しておきます。

サイトにあるデータを整理しました。
(スマホ、タブレット非推奨)

気象庁(東京130000.json).docx

データを見てピンときた人もいると思いますが、JSONのフォーマットはpythonの辞書型データに似ています。Pythonなので、コードも辞書型に似ています。

docx非推奨向けの方に、気象庁のデータを図にしました。

JSONの構成

分かりにくいかもしれませんが、括弧と:(コロン)、 , (カンマ)で構成されています。改行とタブ(スペース)を丁寧に入れて整理すると多少は理解できるかと思います。整理、見方のポイントをまとめておきます。

  • グループは括弧でまとめられている
  • データは「キーと値」の対で : コロンを使う
  • 同列データは、 {} 同じ括弧と , カンマでまとめられている
  • 同列データの継続判断は閉じ括弧と , で判断できる
  • 値は、複数のデータを持て、[ ] と , を使う
  • 文字列は ” ” ダブルコーテーションを使う

今回のコードについて、簡単に図解してみます。何となく伝われば嬉しいです。

JSONの構成

プログラムを実行したときの、JSONデータを見ながら上記の部分を色々変更してみて、表示がどのように変化するか試してみると良いと思います。かくいう私も、まだ完全に理解しているわけではありませんので、この後も学びながらになります。

コメント

タイトルとURLをコピーしました