読者です 読者をやめる 読者になる 読者になる

TaillookTech

備忘録

Python3とRequestsで郵便番号から住所を取得するAPIを叩く

Requestsとは

PyhtonのHTTPライブラリ.
人類にとって読みやすくコーディングできるらしい.

qiita.com

インストール

pip3 install requests

郵便番号から住所を取得するAPI

今回は郵便番号データ配信サービスzipcloudのAPIを使用する.

zipcloudの使い方

ベースURL : http://zipcloud.ibsnet.co.jp/api/search
このURLにパラメータを加えてリクエストを送る.

zipcloudを使ってみる

getでhttp://zipcloud.ibsnet.co.jp/api/search?zipcode=1540013で郵便番号を与えるとjsonが返ってくる.

{
    "message": null,
    "results": [
        {
            "address1": "東京都",
            "address2": "世田谷区",
            "address3": "駒沢公園",
            "kana1": "トウキョウト",
            "kana2": "セタガヤク",
            "kana3": "コマザワコウエン",
            "prefcode": "13",
            "zipcode": "1540013"
        }
    ],
    "status": 200
}

不正な桁の郵便番号を渡すとエラーが出る.
http://zipcloud.ibsnet.co.jp/api/search?zipcode=19216811

{
    "message": "パラメータ「郵便番号」の桁数が不正です。",
    "results": null,
    "status": 400
}

存在しない郵便番号を渡すとnullが返る.
http://zipcloud.ibsnet.co.jp/api/search?zipcode=1234567

{
    "message": null,
    "results": null,
    "status": 200
}

PythonからAPIを叩いてみる

テキトーにコードを書いてみる

import json
import sys
import requests

def main(zipcode):
    url = "http://zipcloud.ibsnet.co.jp/api/search"
    param = {"zipcode": zipcode}

    res = requests.get(url, params=param)
    response = json.loads(res.text)
    address = response["results"][0]

    print(address["address1"] + address["address2"] + address["address3"])

main(sys.argv[1])

動作例

$ python3 main.py 1900003
東京都立川市栄町