XMLの解析
XMLを解析できれば色々出来そうなので調べてみたところ、REXMLというパーサが標準で使えるらしい。ということで、とりあえず価格.comのサンプルリクエストで試してみたところ、簡単に要素を取得できた。
require "kconv" require "rexml/document" require "open-uri" url = "http://api.tabelog.com/Ver1/RestaurantSearch/?Latitude=35.701&Longitude=139.754&Datum=world&SearchRange=small&Prefecture=tokyo&Station=%E6%B0%B4%E9%81%93%E6%A9%8B&ResultSet=large&SortOrder=totalscore&PageNum=1" doc = nil # プロキシを通す場合は open(url, :proxy => 'http://url:port') open(url){|file| doc = REXML::Document.new file } doc.elements.each("/RestaurantInfo/Item") { |elem| puts elem.elements["RestaurantName"].text.tosjis } # 出力 # 焼肉 京城 水道橋店 # 立ち飲み処 うけもち # ...
さらにXPathでの指定も可能。
REXML::XPath.match(doc, "//RestaurantName").each { |i| puts i.text.tosjis }
これは便利そう!
XPathもちゃんと調べて使ってみよっと。