はじめに
今郵便番号検索用のプログラムを作っているのですが、全国の郵便番号情報(zipcode)が詰まったファイルが日本郵政グループのサイトにあります。これをRubyでダウンロードする際の処理をメモ程度ですが記載します。
uire 'open-uri'
url = "https://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip"
filename = "ken_all.zip"
File.open(filename, "wb") do |f|
data = open(url, "r:Shift_jis:utf-8").read
f.write data
end
「data = open(url, “r:Shift_jis:utf-8”).read」の箇所は、「data = open(url).read」でも問題ありませんでした。
zipファイルのダウンロードなので特に外部エンコードと内部エンコードを指定する必要はなかったようです。
ただ、Excelファイルを読み込んだり書き込んだりする際は、上記の通りShift_jisで読み込み、Rubyでの内部処理ではutf-8で処理するよう記述した方がよいと思います。
ExcelとかWindows系は改行コードがCRLFですしね。
ダウンロードが終わればzipファイルを解凍し、出てきたCSVファイルのデータ(約12万行あります)をDBに格納します。
格納後、郵便番号から住所を検索する関数を実装することと、住所の一部からマッチしたレコードを抽出処理させる関数も作る予定です。
まっ、ある程度の住所検索ができるものを作ろうと思います。
コメント