- blogs:
- cles::blog
Mechanize0.9.0でスクレイピングがうまくいかないときは
新サーバに移行をしたらcronに仕込んであるmixi2gmailがうまく動かなくなってしまいました。
同じスクリプトを旧サーバで実行すると正常に動作するので、何か環境に依存した問題なんだろうと思って、詳しく調べてみると
という部分で続きを読むがうまく見つけられていないようだったので、おそらく文字コードの問題だろうということで、文字コードを変えてみたりといろいろ試行錯誤をしていたのですが、ふとエラーを吐いているのがいつものHpricotではなくて、見慣れないNokogiriであることに気づきました。
ということで、ググってみるとMechanizehは0.9.0からHTMLパーサーがHpricotからNokogiriに変更されていて、日本語を検索するようなスクリプトを書いている場合には、この仕様変更による副作用があるというのが結論のようです。
RubyのMechanize0.9.0&Nokogiriは日本語をうまく扱えないことがある - きたももんががきたん。
なお、「NokogiriはHpricotと互換」と謡われていますが、実はこの文字エンコードの扱いの部分が違います。
Hpricot
文字エンコードは不変で出力は素通し
Nokogiri
文字エンコードは入力が UTF-32/16/8 か ASCII を期待、出力は UTF-8 に強制的に変換
これまでNokogiriは使ったことがなかったのでよく知りませんでしたが、このあたりは覚えておいた方が良さそうです。
† Mechanize 0.9でHpricotを使う方法
Mechanize 0.9以降でHpricotを使には以下のようにすればいいようです。
僕の場合はmixi2gmailがこれでばっちり動くようになりました。
RubyのWWW::Mechanize が 0.9.0 に - きたももんががきたん。
Nokogiri を使わない場合は、明示的に
require 'hpricot'
WWW::Mechanize.html_parser = Hpricot
agent = WWW::Mechanize.new
...
と書きます。
このエントリへのTrackbackにはこのURLが必要です→http://blog.cles.jp/item/2870
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
mechanizeをアップデートしたら、今までバッチで動かしてたスクリプトがエラーになってて、今頃気づいてキーってなってたとこです。
NikogoriからHpricotに切り替えてしまえば良いのですね!
助かります!
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
sp-20100314225025644595554@cles.net
- nokogiri 文字化け
- Google - 10/03/14 21:02:11
- nokogiri
- Google - 10/03/06 19:39:31
- nokogiri 文字化け
- Google - 10/03/04 13:47:36
- hpricot
- Yahoo! - 10/03/04 12:27:27
- mechanize mixi
- Google - 10/03/03 21:38:49
- nokogiri mac 文字化け
- Google - 10/03/03 07:43:59
- nokogiri 文字化け
- Google - 10/02/26 17:01:54
- nokogiri 文字化け
- Google - 10/02/21 13:54:22
- nokogiri 文字化け
- Google - 10/02/20 13:11:30
- SourceForge.JPのSubversion... (5)
- 夏合宿 1日目 (4)
- 時間がたっても変わらないもの (4)
- コインランドリー (4)
- おめでとうございます (4)
- 散髪しました (3)
- やっと髪をきりました (3)
- 大雪でした (3)
- 知恵の輪 サターン編 (3)
- AspectJ + AspectWerkz → Asp... (3)
2 . やっぱりあった!パクれる読書感想文! [7166x]
3 . Echofon for Firefox [6105x]
4 . 急性胃腸炎 [5542x]
5 . 芸能人の本名。 [5457x]
- CD-ROM起動で、HDDを完全消去
- NP_Moblog v1.16
- pinzoro 01/15
- hsur 12/29
- and more...
- 耳がおかしいと思ったら突発..
- baca 01/13
- hsur 01/13
- and more...
★はてな認証APIをつかってログインすることができます。




