🥰

郵便番号とその地域を取得するプログラムを作ってみた。

2022/03/19に公開

導入

現在Pythonを用いてスクレイピングを絶賛勉強しています。
そこで今回は参考文献にある本を使用して自分流にコードを書き換えて、「郵便番号とその地域を取得するプログラム」を作ってみました。

コード

bs-zip.py
import re
from bs4 import BeautifulSoup
import urllib.request as req

#URLの取得
url = "http://api.aoikujira.com/zip/xml/"

i = 1
for i in range(50):
    if(i < 10): #郵便番号が150-000Xのとき
        a = url + "150000" + str(i)
        res = req.urlopen(a)
        soup = BeautifulSoup(res, "html.parser")
        zip = soup.find("zip").string
        ken = soup.find("ken").string
        shi = soup.find("shi").string
        cho = soup.find("cho").string
        if(ken == None):
            continue
        print(zip, ken, shi, cho)
    elif(i < 50): #郵便番号が150-00XXのとき
        a = url + "15000" + str(i)
        res = req.urlopen(a)
        soup = BeautifulSoup(res, "html.parser")
        zip = soup.find("zip").string
        ken = soup.find("ken").string
        shi = soup.find("shi").string
        cho = soup.find("cho").string
        if(ken == None):
            continue
        print(zip, ken, shi, cho)

実行結果

実行結果
$ python3 bs-zip.py 
1500000 東京都 渋谷区 以下に掲載がない場合
1500001 東京都 渋谷区 神宮前
1500002 東京都 渋谷区 渋谷
1500011 東京都 渋谷区 東
1500012 東京都 渋谷区 広尾
1500013 東京都 渋谷区 恵比寿(次のビルを除く)
1500021 東京都 渋谷区 恵比寿西
1500022 東京都 渋谷区 恵比寿南
1500031 東京都 渋谷区 桜丘町
1500032 東京都 渋谷区 鶯谷町
1500033 東京都 渋谷区 猿楽町
1500034 東京都 渋谷区 代官山町
1500035 東京都 渋谷区 鉢山町
1500036 東京都 渋谷区 南平台町
1500041 東京都 渋谷区 神南
1500042 東京都 渋谷区 宇田川町
1500043 東京都 渋谷区 道玄坂
1500044 東京都 渋谷区 円山町
1500045 東京都 渋谷区 神泉町
1500046 東京都 渋谷区 松濤
1500047 東京都 渋谷区 神山町

参考文献

こちらの本で勉強させていただいています。
・Pythonによるスクレイピング&機械学習[開発テクニック](ソシム株式会社)

郵便番号を取得するAPIのリンク
クジラWeb API

Discussion