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 でパースしようかなー」ということになって結局パースが中途半端に終了することがあります。』だそうです。
- Newer: CocoaでHTMLを扱う
- Older: Leopardで使えないWifiアクセスポイント
Comments:0
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 週刊(月刊?)プレカリアート














