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件の物件名&住所を表示させている。
物件名と住所は比較的楽に分離できそうなのでやってみたが、セパレータに全角縦棒と全角空白を使うという危うい方法なので、いつも正しく動くという保証はない……
続いて、物件価格を抽出するのは、サンプルレスポンスを見ても相当面倒なことは一目瞭然。
賃貸物件が入っていないため、モチベーションが低下した身にはかなりつらい(苦笑)。