0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

東京都が公開しているAPIで毎日コロナ感染者数を取得するコード①

Last updated at Posted at 2021-05-19

東京都がこんな感じでいけてるAPIを公開しているので、勉強がてらに毎日の感染数を取得するアプリを作成してみた

##コードはわずか18行程度

tokyo_corona.py
import requests
import datetime
import pandas as pd

today = datetime.datetime.now().strftime('%Y-%m-%d')
payload = {'from': today, 'till': today, 'limit': 1000}

res = requests.get(
    "https://api.data.metro.tokyo.lg.jp/v1/Covid19Patient", params=payload)
data = res.json()

infect_data = data[0]
endCursor = data[1]

df = pd.DataFrame(infect_data)
total = df.shape[0]

print(f'本日の東京のコロナ感染数は{total}人です。')
出力結果(2021年5月19日現在)
本日の東京のコロナ感染数は766人です。

ただこれだとlimitの設定が1000人以上だと人数の取得ができない。
東京都のAPIのページには以下の通り書かれているので、
endCursorをパラメータに指定しないといけないらしい

マッチレコード数がlimitを超える場合、前のレスポンスにおける"endCursor"の値を指定することで、>それ以降のデータを出力 (URLエンコードが必要)

こちらについては確かにレスポンスデータを見るとリスト形式で以下のフッターが存在するため、
そのendCursorの値をパラメータとして渡してやらなければいけないようだ。

{'moreResults': 'MORE_RESULTS_AFTER_LIMIT',
'endCursor': 'Cn4KHQoQ5YWs6KGoX+W5tOaciOaXpRIJCICA6saWp/ACEllqGmJ+dG9reW8tY2F0YWxvZy1wcm9kdWN0aW9ucjsLEghSZXZpc2lvbiISQ292aWQxOVBhdGllbnQ6NDIwDAsSDkNvdmlkMTlQYXRpZW50GICAgPS29ucLDBgAIAE=',
'revision': 420,
'updated': '2021-05-19T10:17:50.674Z'}

また1000件超えてレスポンスが存在しない場合は、次の通りのNO_MORE_RESULTSというmoreResultsの値となるためこちらをキーに判定させてやることができそうである。

{'moreResults': 'NO_MORE_RESULTS',
'endCursor': 'Cn4KHQoQ5YWs6KGoX+W5tOaciOaXpRIJCICA6saWp/ACEllqGmJ+dG9reW8tY2F0YWxvZy1wcm9kdWN0aW9ucjsLEghSZXZpc2lvbiISQ292aWQxOVBhdGllbnQ6NDIwDAsSDkNvdmlkMTlQYXRpZW50GICAgPS29v8LDBgAIAE=',
'revision': 420,
'updated': '2021-05-19T10:17:50.674Z'}]

よって上記を反映すれば1000件を超えた後も値を取得できそうであるが、
そのコードについてはまた別の日に対応しようと思う。

0
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?