yahoo株価情報から情報取得

株価情報を取ってきたかったので適当に頑張ってみる。
試行錯誤しながら進めてたので改めてみるとDRYでないなぁ。後できれいにしよう(regrep_strという名前も…)。

require 'net/http'
require 'kconv'                                                                                                              
                                                                                                                             
class YahooInfo                                                                                                              
  def get(code)                                                                                                              
    Net::HTTP.version_1_2                                                                                                    
    Net::HTTP.start('quote.yahoo.co.jp', 80) {|http|                                                                         
      response = http.get("/q?s=#{code}.t&d=t")                                                                              
      response_body = response.body.kconv(Kconv::SJIS, Kconv::EUC)                                                           
      regrep_str = "<td nowrap>&nbsp;<b>(.*?)</b>"                                                                           
      name = response_body.scan(/#{regrep_str}/)                                                                             
      regrep_str= "</b>&nbsp;<b>【</b>(.*?):<b>"                                                                            
      exchange = response_body.scan(/#{regrep_str}/)                                                                         
      regrep_str= "取引値<br>.*?<b>(.*?)</b>"                                                                                
      price = response_body.scan(/#{regrep_str}/)                                                                            
      regrep_str= "<td nowrap>出来高<br>(.*?)</td>"                                                                          
      volume = response_body.scan(/#{regrep_str}/)                                                                           
      regrep_str= "<td nowrap>時価総額<br>(.*?)</td>"                                                                        
      capital = response_body.scan(/#{regrep_str}/)                                                                          
      regrep_str= "<td nowrap>発行済株式数<br>(.*?)</td>"                                                                    
      issue_number = response_body.scan(/#{regrep_str}/)                                                                     
puts name                                                                                                                    
puts exchange                                                                                                                
puts price                                                                                                                   
puts volume                                                                                                                  
puts capital                                                                                                                 
puts issue_number                                                                                                            
    }                                                                                                                        
  end                                                                                                                        
end

$ irb
irb(main):001:0> require 'yahoo_info.rb'
=> true
irb(main):002:0> yi=YahooInfo.new
=> #<YahooInfo:0x69a1ed0>
irb(main):003:0> yi.get 4666
パーク24(株)
東証11,508
493,500
222,954百万円
147,847,804株
=> nil
irb(main):004:0>