AppleのMac整備済製品のページをスクレイピングして、WordPressのウィジェットを作ろうとしているんですが、文字化けの壁に数日阻まれています。。。
いろいろ調べてるんですが、うまくいきませんねぇ~(涙)
環境
- ruby 1.9.2dev(2010-07-11 revision 28618) [i386-mswin32]
- nokogiri: 1.4.2.1
# -*- coding: utf-8 -*-
require 'open-uri'
require 'nokogiri'
url = 'http://store.apple.com/jp/browse/home/specialdeals/mac'
doc = Nokogiri::HTML.parse(open(url))
doc.css("td.specs h3 a").each do |t|
tt = Marshal.dump(t.text)
puts tt
puts tt.encoding
end
AppleのページはUTF-8で、NokogoriもUTF-8に自動変換するみたいな記事をみつけて問題ないと思ったら。。。
I"
MacBook Pro 17テ」ツつ、テ」ツδウテ」ツδ・2.8GHz Intel Core 2
Duo / テゥツ敖榲・ツ・嘉ヲツイツ「テ」ツδッテ」ツつ、テ」ツδ嘉」ツつケテ」ツつッテ」ツδェテ」ツδシテ」ツδウテ」ツδ・
」ツつ」テ」ツつケテ」ツδ療」ツδャテ」ツつ、 / USテ」ツつュテ」ツδシテ」ツδ愿」ツδシテ」ツδ・[テヲツ閉エテ・ツつ凖ヲ
ツクツ暗ィツ」ツステ・ツ督‐
:ET
ASCII-8BIT
I"・
MacBook Pro 17テ」ツつ、テ」ツδウテ」ツδ・3.06GHz Intel Core
2 Duo [テヲツ閉エテ・ツつ凖ヲツクツ暗ィツ」ツステ・ツ督‐
:ET
ASCII-8BIT
文字コードが「ASCII-8BIT」になってるから、むりやり「force_encoding」しちゃえとおもって、
11行目を
puts tt.force_encoding 'Shift_JIS'
ってやると、
I"
MacBook Pro 17テ」ツつ、テ」ツδウテ」ツδ・2.8GHz Intel Core 2
Duo / テゥツ敖榲・ツ・嘉ヲツイツ「テ」ツδッテ」ツつ、テ」ツδ嘉」ツつケテ」ツつッテ」ツδェテ」ツδシテ」ツδウテ」ツδ・
」ツつ」テ」ツつケテ」ツδ療」ツδャテ」ツつ、 / USテ」ツつュテ」ツδシテ」ツδ愿」ツδシテ」ツδ・[テヲツ閉エテ・ツつ凖ヲ
ツクツ暗ィツ」ツステ・ツ督‐
:ET
Shift_JIS
I"・
MacBook Pro 17テ」ツつ、テ」ツδウテ」ツδ・3.06GHz Intel Core
2 Duo [テヲツ閉エテ・ツつ凖ヲツクツ暗ィツ」ツステ・ツ督‐
:ET
Shift_JIS
今度はUTF-8で「force_encoding」するとどうだと思って
puts tt.force_encoding 'Shift_JIS'
やってみると、
I"
MacBook Pro 17テ」ツつ、テ」ツδウテ」ツδ・2.8GHz Intel Core 2
Duo / テゥツ敖榲・ツ・嘉ヲツイツ「テ」ツδッテ」ツつ、テ」ツδ嘉」ツつケテ」ツつッテ」ツδェテ」ツδシテ」ツδウテ」ツδ・
」ツつ」テ」ツつケテ」ツδ療」ツδャテ」ツつ、 / USテ」ツつュテ」ツδシテ」ツδ愿」ツδシテ」ツδ・[テヲツ閉エテ・ツつ凖ヲ
ツクツ暗ィツ」ツステ・ツ督‐
:ET
UTF-8
I"・
MacBook Pro 17テ」ツつ、テ」ツδウテ」ツδ・3.06GHz Intel Core
2 Duo [テヲツ閉エテ・ツつ凖ヲツクツ暗ィツ」ツステ・ツ督‐
:ET
UTF-8
んん~、うまくいきませんねぇ、、、