スクレイピングあるある

f:id:whitech0c0late:20180407012745p:plain

もんだい

↑のような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 するとかするとよいよね〜って話...でしたッ!

坂道発信中っていうLINE Bot つくってる

できること

いまのところできることはこれだけ

  • 毎朝、乃木坂の出演情報(tv, radio, magazine, release) が通知される
  • リマインダーを登録できる (tv, radio)
  • 雑誌 (magazine, release) はAmazonのリンクへ遷移できる

流れはこんな感じ

f:id:whitech0c0late:20180320185133p:plainf:id:whitech0c0late:20180320185119p:plainf:id:whitech0c0late:20180320185636j:plain
  1. 情報くる
  2. リマインダーセットする
  3. リマインダーを受け取る

今後

  • 欅坂とか他の坂道グループの情報に対応する
  • 雑誌とかのメディアにも対応する (対応済み)
  • Web版を作って、プッシュ通知をカスタマイズできるようにする
    • 推しメン登録とかする
  • インタラクティブにもっといろいろできるようにする
  • LINE Pay とかも気軽につかえるのかな

開発版だけど (50人限定っぽい)

バグあると思われますがが。 使ってみてのなにかあれば幸いです。

https://qr-official.line.me/M/pHJDflsjJ2.png

友だち追加

追記 (2018/03/30)

追記

worker とめて(インタラクティブな動きとタイマー)、配信も Amazon の雑誌だけを対象にした。