Help us understand the problem. What is going on with this article?

PythonによるWebAPIからのデータ取得

More than 1 year has passed since last update.

前置き

O'Reilly Japan の「PythonとJavaScriptではじめるデータビジュアライゼーション」を参考に、勉強をしています。

今回は、OECD(経済能力開発機構)の提供するデータセットを、OECDのWebAPIにより取得します。

OECD APIについて

OECD API は、HTTPメソッドGETにより取得操作を指定する RESTful APIだそうです。

URLの例

http://stats.oecd.org/sdmx-json/data/QNA    # ONA(Quarterly National Accounts : 四半期国民経済計算)データセット
    /USA+JPN.GDP+B1_GE.CUR+VOBARSA.Q        # 位置、主題、スケール、頻度の4つの特製
    /all?startTime=2016-Q1&endTime=2017-Q1  # 期間

データセット名とドット区切りの特性でクエリを構築しています。
それぞれの特性は、+で区切って複数の値を指定することができます。
URLは標準的なHTTPパラメータの指定(?で始まり&で区切る)も可能です。

requests で RESTful APIを使用した実装例

OECD(経済協力開発機構)の提供するデータセットを取得する関数

oecd_api.py
import requests

OECD_ROOT_URL = 'http://stats.oecd.org/sdmx-json/data'

#OECD API用のURLを作成してレスポンスを返す
def make_OECD_request(dsname, dimensions, params=None, root_dir=OECD_ROOT_URL):
    if params is None:
        params = {}

    dim_args = ['+'.join(d) for d in dimensions]
    dim_str = '.'.join(dim_args)

    url = root_dir + '/' + dsname + '/' + dim_str + '/all'
    print('Requesting URL: ' + url)
    return requests.get(url, params=params)

2016Q1 から 2017Q1 までの米国と日本の経済データを取得

>>> import oecd_api
>>>
>>> # データ取得
>>> response = oecd_api.make_OECD_request('QNA',(('USA', 'JPN'),('GDP', 'B1_GE'),('CUR', 'VOBARSA'), ('Q')),{'startTime':'2016-Q1', 'endTime':'2017-Q1'})
Requesting URL: http://stats.oecd.org/sdmx-json/data/QNA/USA+JPN.GDP+B1_GE.CUR+VOBARSA.Q/all

>>> # レスポンスのステータスコード
>>> response.status_code
200

>>> # エンコードされたURL
>>> response.url
'http://stats.oecd.org/sdmx-json/data/QNA/USA+JPN.GDP+B1_GE.CUR+VOBARSA.Q/all?startTime=2016-Q1&endTime=2017-Q1'

>>> # JSON形式で取得
>>> json_data = response.json()

参考

OECDのWebAPIのドキュメントページ(API documentation (SDMX-JSON))
https://data.oecd.org/api/sdmx-json-documentation/

Requests クイックスタート
http://requests-docs-ja.readthedocs.io/en/latest/user/quickstart/#url

Amtkxa
ソフトウェアエンジニアです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした