【Ruby 2.2】HTTPでGETリクエストを送ってResponseを表示する
RubyでHTTP通信してみたくて手始めにkakaku.comのトップページのHTMLを取得してみました。
最初に書いたコードはこちら
require 'net/http' require 'uri' uri = URI.parse('http://kakaku.com/') res = Net::HTTP.get_response(uri) puts res.body
これを実行するとズラーっとHTML文が出力されると思いますが、このままだと日本語が文字化けして表示されます。 これはkakaku.comがShift-JISで書かれていて、Ruby 2.2は標準の文字コードがUTF-8だからです。なのでUTF-8からShift-JISへ変換してから出力する必要があります。 変換は簡単でkconvというライブラリを使うだけです。 文字化けしないように改良したコードが以下の通り
#! ruby -Ku require 'net/http' require 'uri' require 'kconv' uri = URI.parse('http://kakaku.com/') res = Net::HTTP.get_response(uri) puts Kconv.tosjis(res.body)
これで解決。めでたしめでたし。