Smatch! API にチャレンジ

d:id:n_shuyo:20060619 のように文句だけ言うのも何なので、まずは簡単に API を呼び出すコードを書いてみた。

#!/usr/bin/ruby -Ku

require 'nkf'
require 'net/http'
require 'rexml/document'

Net::HTTP.version_1_2
doc = nil
Net::HTTP.start('search.smatch.jp') do |http|
  response = http.get('/smatch/getBukkenInfo.do?SE=010')
  doc = REXML::Document.new(response.body)
end

resultsets = doc.elements['smatch/resultset']
puts "totalhits: " + resultsets.attributes['totalhits']

doc.elements.each('smatch/resultset/item') do |item|
  if item.elements['title'].text =~ /(.+)|(.+) (.+)/
    name, address = $2, $3
    puts
    puts "name:    " + NKF.nkf("-Ws", name   )
    puts "address: " + NKF.nkf("-Ws", address)
  end
end

新築マンションを検索して、該当件数と最初の20件の物件名&住所を表示させている。

物件名と住所は比較的楽に分離できそうなのでやってみたが、セパレータに全角縦棒と全角空白を使うという危うい方法なので、いつも正しく動くという保証はない……


続いて、物件価格を抽出するのは、サンプルレスポンスを見ても相当面倒なことは一目瞭然。
賃貸物件が入っていないため、モチベーションが低下した身にはかなりつらい(苦笑)。


他の3つのAPI(じゃらんカーセンサー、フロムエー)は「ちゃんと」しているのになあ……