読者です 読者をやめる 読者になる 読者になる

harry’s memorandum

おれおれメモ

Yahooのトランジットから運賃を取得する

GoogleでもYahooでも路線情報は便利なのですが、運賃を教えてくれるAPIってないから、乱暴だけどURIから情報を無理やり取るようにしてみた。

必要なライブラリをインストール

とりあえずURIいじる関係のものをインストール

$ sudo gem install hoe hpricot mechanize rubyforge

Yahooの路線情報から料金だけを取得する

#!/usr/bin/env ruby

require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'kconv'

## 岐阜 -> 秋田  getで送ってるURL
url = "http://transit.yahoo.co.jp/search/result?from=%E5%B2%90%E9%98%9C&to=%E7%A7%8B%E7%94%B0&via=&shin=1&ex=1&hb=1&al=1&ym=200810&d=29&hh=02&m1=1&m2=3&type=1&ost=0&ei=utf-8&x=59&y=5"

class YahooTransit
  def initialize(url)
    @url = url
    @doc = Hpricot(open(@url).read)
    @parse_tag = "span[@class^='route-fare']"
  end
  def expense
    #(@doc/@parse_tag).map {|elem| elem.inner_html.toutf8.gsub(/(,|円)/,'') }.sort
    (@doc/@parse_tag).map {|elem| elem.inner_html.toutf8.gsub(/[^0-9]/,'') }.sort
  end
end

yt = YahooTransit.new(url)
puts yt.expense.join(",") #=> 30740,30830,31980

CSSセレクタ正規表現とかも使えるんだ。知らなかった。ちゃんとドキュメント読まないとダメですね。

    @parse_tag = "span[@class^='route-fare']"