今回は、外部のウェブサイトでAPIとして公開されているJSON形式などのデータフィードを、Pythonで取得する方法を紹介しよう。
コンテンツ
requestsパッケージをインポートする
PythonからAPIにアクセスするには多くの方法が挙げられるが、中でも手軽に使えるのが今回紹介するrequestsパッケージだ。
まずはライブラリをインポートする。
import requests
住所検索APIを使ってデータを取得する
今回は「郵便番号-住所検索API」を例として使用するので、変数urlにAPIのリクエストURLを設定する。
url = 'https://api.zipaddress.net/'
次にrequestsのgetメソッドを使ってAPIにアクセスする。
getメソッドは引数に指定したURLへリクエストを送り、戻り値としてレスポンスオブジェクトを返す。
res = requests.get(url)
# <Response [200]>
jsonメソッド
レスポンスオブジェクトのjsonメソッドを使うと、Pythonオブジェクトを含むディクショナリが戻される。
data = res.json()
# {'code': 400, 'message': 'zipcode parameter is not exists.'}
今回リクエストしたURLには特にパラメータを指定していなかったので、エラーコード400が返された。
messageを読むと、どうやらzipcodeのパラメータが必須のようだ。
変数urlを下記のとおり改変し、再度jsonメソッドを実行してみよう。
import requests
url = 'https://api.zipaddress.net/?zipcode=5770056'
res = requests.get(url)
data = res.json()
# {'code': 200,
# 'data': {'pref': '大阪府',
# 'address': '東大阪市長堂',
# 'city': '東大阪市',
# 'town': '長堂',
# 'fullAddress': '大阪府東大阪市長堂'}}
郵便番号は適当に実在する番号を指定してくれ。
ハイフンは有り無しどちらでも良いようだ。
変数dataを見ると、レスポンスコード200が返り、正しく住所検索がおこなわれていることが分かる。
取得したJSONをpandasデータフレームに変換する
pandasを使えば取得したJSONデータをデータフレームに変換し、高度な分析をおこなうこともできるだろう。
import requests
import pandas as pd
url = 'https://api.zipaddress.net/?zipcode=577-0056'
res = requests.get(url)
data = res.json()
df = pd.DataFrame(data, columns=['data'])
# data
# address 東大阪市長堂
# city 東大阪市
# fullAddress 大阪府東大阪市長堂
# pref 大阪府
# town 長堂