📮

[Python] APIで郵便番号から住所を取得する方法

2023/06/13に公開

はじめに

先日、API で郵便番号から住所を取得する方法を学習しました。
より自分の理解が深めるために執筆します。

また、ユーザー登録の住所登録の処理等で使えると思います。

項目 内容
対象者 ・API で郵便番号から住所を取得する方法が分からない方
伝えたい内容 ・API で郵便番号から住所を取得する方法が分かる
前提条件 ・Python 3.9.10
・requests 2.28.2

手順解説

1. requests ライブラリーをインストールする

下記コマンドでインストールする

pip install requests

2. requests ライブラリーを確認する

Version: 2.28.2がインストールされている事が確認できます。

$ pip show requests
Name: requests
Version: 2.28.2
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /home/furuta/.local/lib/python3.9/site-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by:

3. 使用するライブラリーをインポートする

使用するファイル内の上段で記載し、インポートします。

from pprint import pprint
import requests

4. API で住所の情報を取得する

今回は、東京スカイツリーの住所を取得する事を目標とします

〒 131-0045 東京都墨田区押上1丁目1 − 2

API で住所の情報を取得するには、郵便番号、郵便番号検索 API の URLが必要です。
zipcodeURLを変数として用意します。
先ほどの変数をrequests.get()の引数として渡します。

# スカイツリーの郵便番号
zipcode = "1310045"
# 郵便番号検索APIのURLを定数化する
URL = 'https://zipcloud.ibsnet.co.jp/api/search'
# paramsで検索したい郵便番号を渡す
res = requests.get(URL, params={'zipcode': zipcode})

4. API で取得した情報を出力する

返ってきたデータをres.json()で json 形式に変換する

# 検索した住所を出力する
pprint(res.json())

サンプルコード

先ほどの手順解説をまとめたコードになります。

zipcode.py
# jsonの中身を見やすいようにpprintを活用
from pprint import pprint
# ライブラリーをインポートする
import requests

# スカイツリーの郵便番号
zipcode = "1310045"
# 郵便番号検索APIのURLを定数化する
URL = 'https://zipcloud.ibsnet.co.jp/api/search'
# paramsで検索したい郵便番号を渡す
res = requests.get(URL, params={'zipcode': zipcode})

# 検索した住所を出力する
pprint(res.json())

address1~3 を組み合わせたら、
東京都墨田区押上になり目的の東京スカイツリーの住所を取得する事が出来ました。

$ python zipcode.py
{'message': None,
 'results': [{'address1': '東京都',
              'address2': '墨田区',
              'address3': '押上',
              'kana1': 'トウキョウト',
              'kana2': 'スミダク',
              'kana3': 'オシアゲ',
              'prefcode': '13',
              'zipcode': '1310045'}],
 'status': 200}

おわりに

requests ライブラリーを初めて触りましたが
今回の学習で requests ライブラリーの使い方を理解する事が出来ました。

他にも API もあるので、色々触って遊びたいと思います。

GitHubで編集を提案

Discussion