はじめに
今回はPythonでAPIを用いてデータを取得する方法を扱います。世の中には様々なサービスがあって、APIが公開されています。APIを利用することでそのサービスに関するデータを簡単に取得することができます。APIの基本を身につけて、データを集められるようになりましょう。
APIの基本
APIは、はじめはよくわからないかもしれませんが、基本を押さえてしまえば簡単です。まずは各サービスでAPIドキュメントがまとめられているので、登録を済ませてしまいましょう。そのうえで、まずはエンドポイントと呼ばれる接続先のURLを確認します。このエンドポイントに対して、次の3つの情報を付加します。
- HTTPメソッド
- 認証情報
- 条件指定のパラメータ
認証情報や条件指定のパラメータは、サービス提供者によって異なりますが、「認証情報はheaders、条件指定のパラメータはbodyやparamsとして分けて送る場合」と「認証情報も条件指定のパラメータも合わせて送る場合」があります。今回は認証を伴わない例として、HTTPメソッドの指定と条件指定のパラメータを付加してAPIを叩いてみることにしましょう。
試してみる
今回は、株式会社アイビスが提供している郵便番号検索APIを使ってみましょう。郵便番号検索APIに関する説明はこちらのページを参照してください。
ページの説明をみると、リクエストURLとして「https://zipcloud.ibsnet.co.jp/api/search」と記載されています。これが今回の投稿では「エンドポイント」と説明した接続先URLになります。
ページのすぐ下の部分には、リクエストパラメータの説明があります。ここをよく読んで、条件を指定しましょう。
のように説明があるので、簡単ですね。東京タワーの郵便番号「105-0011」を使って試してみましょう。PythonでAPIを叩くには「requests」というライブラリが便利です。まずはこれをインポートします。次に、エンドポイントと条件を書いていきます。ここでは、エンドポイントを「url」に条件を「params」という変数に記述することにしましょう。
# ライブラリのインポート import requests # エンドポイント url='https://zipcloud.ibsnet.co.jp/api/search' # 条件指定 params={ 'zipcode':'105-0011' } # データの取得 res=requests.get(url,params) res
ステータスコード200が返ってきているので、うまくいっていますね。では、中身を見てみましょう。ページ下部のレスポンスサンプルをみてみると、json形式で返ってきているようです。
res.json()
ちゃんと取得できてますね。この見方ですが、先ほどのページ下部にレスポンスフィールドの説明があります。
ちょっと並び順が違いますが、status, message, resultsというフィールドがあり、resultsというフィールドには、さらにzipcode~kana3までのフィールドあります。今回、東京タワーの郵便番号でデータで試したら、「東京都港区芝公園」がちゃんと取れてますね。
まとめ
いかがでしたか?このように基本さえ押さえてしまえば、簡単ですね。世の中にはいろんなAPIがあるので、いろいろ試してみるとよいと思います。
コメント