プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

REXMLでのパース処置アレコレー最終回ー

今までのREXMLでのパース処理の実装をもとに、Livedoor天気情報を取得します。
Livedoor天気情報

Livedoor天気情報の仕様にも書いてありますが、パスを指定することで、特定の地域・時間の天気を取得することができます。ただ、今回はREXMLの実装ということで、例で示された福岡県久留米の天気を取得します。さっそくコードです。

#Livedoor天気情報を取得するスクリプトです
# -*- encoding: utf-8 -*-
#!ruby -Ks
class Call
  require 'open-uri'
  require 'rexml/document'
  require 'kconv'

  def call_wheather
    #URIを指定します。Livedoor天気情報の例からそのまま抜粋しています。
    #city、dayの値を変えてあげれば他の地域の情報が取得できます。今回は実装しません。
    uri = "http://weather.livedoor.com/forecast/webservice/rest/v1?city=113&day=tomorrow"
    doc = nil
    begin
      open(uri) do |uri|
      doc = REXML::Document.new(uri)
      end
      wheather = doc.root
      root_text = wheather.text
      #root要素からtelopを抜き出す
      print("#{doc.elements["lwws"].elements["telop"].text}","\n")

        rescue SocketError
          puts"SocketError:#{uri}"
        rescue OpenURI::HTTPError
          puts"HTTPError:#{uri}"
        end
  end
end

w = Call.new
w.call_wheather

#=>曇時々雨

以上です。URLを指定するフォームを用意するほどの気力が残ってなかったので、福岡県久留米の情報を取得して終了です。