今回は、外部のウェブサイトでAPIとして公開されているJSON形式などのデータフィードを、Pythonで取得する方法を紹介しよう。
Contents
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 長堂