Freetel サイトのスクレイピングを行って,通信量と料金を取得する。
FREETEL(フリーテル) は格安 SIM を販売する MVNO 事業者である。価格が安いのと,従量制のプランがあるというのが魅力で,今年の4月から利用している (nlog(n): さようなら Y!mobile こんにちは freetel)。
現在のところ,Freetel には従量制のプランがあるものの,専用アプリが提供されていないため,現在までの通信量と料金が Web サイトにアクセスしなければ分からないという欠点がある。複数回線を契約して家族に使わせている場合,個別の通信量が分からないという問題もある。さらに,月間使用量が最終的に何 GB になったのかについても明細書に記載されないため,料金の内訳が分からないという問題もある。
そこで,今回は Freetel サイトのスクレイピングを行って,現在時点の通信量と料金を取り出することにした。
動作環境は,Vine Linux 6.2, Perl 5.12.3, Web::Scraper 0.38 である (nlog(n): Web::Scraper のインストール)。
Web サイトをスクレイプする場合,目的の数値がどこに記載されているのかを突き止める必要がある。今回は Chrome 51.0 を使用した。
Chrome で Web サイトを表示し,「表示」→「開発/管理」→「デベロッパーツール」の順で選択する。目的の数値までたどって,HTML ソースの行を右クリックし,「Copy」→「Copy selector」または「Copy Xpath」とする。今回は CSS セレクタを使うことにした。
Freetel マイページの「ご利用料金」から電話番号と現在までの料金を,「節約モード設定」から電話番号と現在までの通信量を取り出すことにする。ユーザID freetel_userid@your.domain と,パスワード freetel_password は自分のものに書き換える。
現在のところ,Freetel の Web サイトには,要素に統一性がなく,行き当たりばったりで書いている雰囲気である。そのため,CSS セレクタの指定がページ毎にまちまち。
実行結果は以下のとおりである。
電話番号の表記方法もページごとに違っていて,通信量のページはハイフン付きで 070-xxxx-xxxx なのに,料金のページはハイフンなしで 070xxxxxxxx になっている。
Freetel の Web サイトをスクレイプして通信量と料金の数値を取得した。この手のプログラムの悲しいところは,サイトの表記が変わると動作しなくなることである。「その場限りの,暫定的な」プログラムになってしまう。Freetel のサイトは,表記の統一がされておらず (HTML5 のソースも電話番号も) ボロボロだが,Freetel の中の人は無理して直さなくていいから! 「更新しました」とかされると,プログラムの書き直しをしなくてはならないので面倒だから!
次回はこれをグラフ化する (nlog(n): Freetel の通信量を Zabbix 2.4 でグラフ化,nlog(n): Freetel の通信量を Google スプレッドシートでグラフ化)。
2016年9月27日追記:
2016年9月20日頃に表示形式が変わりました。「\x{301c}」は「〜」を表しています。
2016年11月11日追記:
freetel.jp のウェブサイトが変更され,上記スクリプトは動作しなくなりました。グラフ化用スクリプトはメンテナンスしています (nlogist/freetel-usage-charge)。
Master Archive Index
Total Entry Count: 1957