郵便番号検索ページをプログラムから利用してみる
web ページの submit とその結果を得る練習を、郵便番号検索ページを使って行ってみた。
作ったプログラムは zipcode.rb
こんな風に動作する。
$ ruby zipcode.rb 皇居
1, 東京都 千代田区 皇居外苑: 100-0002
$ ruby zipcode.rb 100-000
1, 秋田県 秋田市 以下に掲載がない場合: 010-0000
2, 茨城県 水戸市 以下に掲載がない場合: 310-0000
3, 東京都 千代田区 以下に掲載がない場合: 100-0000
4, 東京都 千代田区 大手町: 100-0004
5, 東京都 千代田区 皇居外苑: 100-0002
6, 東京都 千代田区 千代田: 100-0001
7, 東京都 千代田区 一ツ橋(1丁目): 100-0003
8, 東京都 千代田区 丸の内(次のビルを除く): 100-0005
9, 東京都 千代田区 有楽町: 100-0006
10, 東京都 台東区 以下に掲載がない場合: 110-0000
11, 神奈川県 川崎市川崎区 以下に掲載がない場合: 210-0000
12, 静岡県 沼津市 以下に掲載がない場合: 410-0000
13, 三重県 四日市市 以下に掲載がない場合: 510-0000
14, 三重県 三重郡朝日町 以下に掲載がない場合: 510-0000
15, 三重県 三重郡川越町 以下に掲載がない場合: 510-0000
16, 京都府 京都市西京区 以下に掲載がない場合: 610-0000
17, 岡山県 倉敷市 以下に掲載がない場合: 710-0000
18, 福岡県 福岡市中央区 以下に掲載がない場合: 810-0000
複数単語で検索するときは " で囲んで指定する。
$ ruby zipcode.rb "100 大手町"
1, 群馬県 前橋市 大手町: 371-0026
2, 東京都 千代田区 大手町: 100-0004
3, 静岡県 沼津市 大手町: 410-0801
プログラムコードはこれ。
# excite の郵便番号検索ページを ruby から利用する。
# useage: ruby zupcode.rb keyword
# 検索結果の最初のページ(50件まで) を表示する。require 'rubygems'
require 'mechanize'
require 'open-uri'
require 'kconv'# 郵便番号検索ページの URL
url = 'http://www.excite.co.jp/postcode/'
# keyword ='赤坂ミッドタウン・タワー(1階)'
# keyword ='100-0002'keyword = ARGV.shift
agent = WWW::Mechanize.new # インスタンス生成
agent.user_agent_alias = 'Mac Safari' # User-Agentの設定
page = agent.get(url) # ページ取得search_form = page.forms.first
search_form.keyword = keyword # テキストボックス"keyword"に入力
search_results = agent.submit(search_form) # フォームのsubmitボタンを押す
# puts search_results.body # 結果の取得doc = Hpricot(search_results.body)
# submit せずに 直接 以下の URL を指定することもできる。
# doc = Hpricot(open('http://www.excite.co.jp/postcode/search/?keyword=' + keyword))doc.search("//table[4]/tr") do |tr|
address1 = tr.search('td[1]/font/text()').to_html.tosjis
address2 = tr.search('td[1]/text()').to_html.tosjis
zipcode = tr.search('td[2]/b/text()').to_html.tosjisputs address1 + " " + address2 + ": " + zipcode if (address2 != "")
end
#--- End of File ---
最近のコメント