scrAPI日本語ってゆーかASCII(なのかすら不明)でハマる

id:secondlife:20060922:1158923779に書いてあるデモを試してみると問題無い.
けれども,YouTubeで日本語のタイトルのビデオの題名(長いよ)をスクレイピングしようと思うと,アッサリとハマった.YouTubeとhatenaの違い,それは,文字コードでした.本当によく邪魔をしてくれるヤツだ.hatenaがEUC-JPなのに対し,YouTubeUTF-8.時代はUTF-8…じゃないのか….


例えば,http://www.youtube.com/watch?v=2g2SkaOOXmIで試してみる.題名は,「1992 - tokusô exceedraft (特捜エクシードラフト) OP」.まさにおあつらえ向きである.
これを,以下のようにスクレイピングして取ってくると,こうなる.

uri = URI.parse("http://www.youtube.com/watch?v=2g2SkaOOXmI")
body = Net::HTTP.get_response(uri).body
  
title = Scraper.define {
  process "title", :title => :text
  result :title
}.scrape(body)

puts title
=>
"YouTube - 1992 - tokusô exceedraft
 (特捜エクシードラフト) OP"

どうみてもUTF-8じゃないし,そもそもUTF-8なら,ボクのターミナルはこういう風に出力しない約束になっているはずだ.そうだ,NKF#guessしてみよう.

> NKF.guess(title)  
=> 5
> NKF::ASCII
=> 5

orz
おかしいやろ,ASCIIでôなんかどう考えても無理やろ….何が変なんだろう.そりゃscrAPIが変なんだろうけども.
これは,もちろんKconv#guessでも結果は同じで,ASCII.ASCIIをUTF-8に変換する方法なんてあるのか?KconvでもIconvでも変換できないし,どうすれば良いんだろう.

正直言うと,titleぐらいは正規表現で速攻で取って来れるから良いものの,もっと細かい部分になるとなぁ.とりあえず,今はできないと言う事で.また調べるべきか.

追記

解決した.変だったのは,scrAPIではなくHTMLのパースに使っていたライブラリだった.
id:omochist:20060926:1159282415