今回は、外部のウェブサイトでAPIとして公開されているJSON形式などのデータフィードを、Pythonで取得する方法を紹介しよう。
コンテンツ
requestsパッケージをインポートする
PythonからAPIにアクセスするには多くの方法が挙げられるが、中でも手軽に使えるのが今回紹介するrequestsパッケージだ。
まずはライブラリをインポートする。
1 | import requests |
住所検索APIを使ってデータを取得する
今回は「郵便番号-住所検索API」を例として使用するので、変数urlにAPIのリクエストURLを設定する。
1 | url = 'https://api.zipaddress.net/' |
次にrequestsのgetメソッドを使ってAPIにアクセスする。
getメソッドは引数に指定したURLへリクエストを送り、戻り値としてレスポンスオブジェクトを返す。
1 2 | res = requests.get(url) # <Response [200]> |
jsonメソッド
レスポンスオブジェクトのjsonメソッドを使うと、Pythonオブジェクトを含むディクショナリが戻される。
1 2 | data = res.json() # {'code': 400, 'message': 'zipcode parameter is not exists.'} |
今回リクエストしたURLには特にパラメータを指定していなかったので、エラーコード400が返された。
messageを読むと、どうやらzipcodeのパラメータが必須のようだ。
変数urlを下記のとおり改変し、再度jsonメソッドを実行してみよう。
01 02 03 04 05 06 07 08 09 10 11 | 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データをデータフレームに変換し、高度な分析をおこなうこともできるだろう。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | 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 長堂 |
