スクレイピングあるある
もんだい
↑のようなDOMから、開始時間
, 終了時間
を抜き出すとします。
しかしながら、ちゃんと対応していないと1つの行だけ失敗してしまうようなことが稀に よくあります。なにかわかりますか??(ぱっと見てわかったらあなたは超上級スクレイパーです。)
こたえ
10:00〜10:30 テレビ東京系「特捜警察ジャンポリス」生駒里奈
かいせつ
想定していたやつ
2.5.1 (main)> "18:55~21:54".split('~') => ["18:55", "21:54"]
想定してなかったやつ
2.5.1 (main)> "10:00〜10:30".split('~') => ["10:00〜10:30"]
2.5.1 (main)> '~' == '〜' => false 2.5.1 (main)> '~'.encode(Encoding::Shift_JIS) Encoding::UndefinedConversionError: U+FF5E from UTF-8 to Shift_JIS 2.5.1 (main)> '〜'.encode(Encoding::Shift_JIS) => "\x{8160}"
かいけつ例
2.5.1 (main)> "10:00〜10:30".tr('〜', '~').split('~') => ["10:00", "10:30"]
gsub より tr のが速いっぽい
ちなみに
CSV でいろいろ対応とかするときも、絶対ハマるから encoding して へんなやつは replace するとかするとよいよね〜って話...でしたッ!