Home > Ruby | プログラミング > mechanize 0.9.2が正しく動作しない

mechanize 0.9.2が正しく動作しない

SBI証券のトップページにアクセスするコード

#!/usr/local/bin/ruby -Ku
require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
agent.user_agent_alias = 'Mac Safari'
agent.get('https://trading5.sbisec.co.jp/ETGate')

p agent.page

を書くと次のような結果を得る。

#<WWW::Mechanize::Page
 {url #<URI::HTTPS:0x9c2c0a URL:https://trading5.sbisec.co.jp/ETGate>}
 {meta}
 {title nil}
 {iframes}
 {frames}
 {links #<WWW::Mechanize::Page::Link "" nil>}
 {forms}>

これは意図した動作ではないし、実際に上手く動かない。これを解決するには、agent.page.encoding = “UTF-8″を加えてやる。

#!/usr/local/bin/ruby -Ku
require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
agent.user_agent_alias = 'Mac Safari'
agent.get('https://trading5.sbisec.co.jp/ETGate')
agent.page.encoding = "UTF-8"

p agent.page

そうすると正しく動作する。実行結果は長いのでカット。

なぜこんなことがおきるのか

その答えはきたももんががきたんの「RubyのMechanizeの0.9.2が出ました」に書いてある。これによると『「本体の @body は UTF-8 だけどエンコーディング指示の @encoding は(元HTMLをNKF.guessした)SHIFT_JIS だから SHIFT_JIS でパースしようかなー」ということになって結局パースが中途半端に終了することがあります。』だそうです。

Comments:0

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.neoneet.jp/2009/03/11/mechanize-092%e3%81%8c%e6%ad%a3%e3%81%97%e3%81%8f%e5%8b%95%e4%bd%9c%e3%81%97%e3%81%aa%e3%81%84/trackback/
Listed below are links to weblogs that reference
mechanize 0.9.2が正しく動作しない from 週刊(月刊?)プレカリアート

Home > Ruby | プログラミング > mechanize 0.9.2が正しく動作しない

Search
Feeds
Meta

Page Top