Rokiのチラ裏

学生による学習のログ

totoの公式サイトから試合データとかをスクレイピングしてアレコレ

最近、totoという宝くじを買った。つい先ほど、「後二つ当たっていたら三等でした!」という残念メールが受信されたのだが、なんとなく悔しいので、取り敢えずtotoの公式サイトの過去のくじ結果から過去の試合結果やくじ結果などをcsv形式で吐き出させて、そのデータからアレコレしてみる事にした。

csvを吐き出させる

さてまずはcsvとして吐き出させるわけだが、まぁ正直そのためにはkimono等といった既存のツールを使っても良い。しかし、ツールの使い方を試行錯誤しながら覚えるよりも、自分で書いてしまった方が早いのではと思うので書いた。

以下仕様。

  • BeautifulSoapを使ってクラス名頼りに辿る。
  • totoGoalを除いた全てのデータを取得する。totoGoalは特徴としてゲームスコアを予想するくじなので微妙にページ構成が異なるため。普通にそれに応じて抜き出して勝ち負けの数値も勝手に付与すれば良いのだが、今回は面倒だったので除外する事にした。
  • ご覧の通りpowerted by たくさんのライブラリ

でまぁ実行するとイカしたプログレスバー(powerted by progressbar2)で進捗が確認できる。完了すると、こんな感じ。 f:id:Rok1:20161218060020j:plain

検索する

取得したcsvファイルから最低限検索出来なければ意味がない。エクセル等を使えば色々と出来るが、折角なので書く事にした。

以下のように実行できる。

ヘルプ

% ./a.out
Data size: 612
(?/p/s/d/q) >> ?
? :display this manual
p :display all loaded game
s: the game result of your selecting team
d :the game result of double team mode
q: quit

読み込んだ全ての試合データ・totoくじの情報を出力する。

(?/p/s/d/q) >> p
// (略) 

指定したチームの試合データ・totoくじの情報、そのチームの勝率を出力する。

(?/p/s/d/q) >> s
Team name ? >> 水戸
--- Result --------------------------------
03/25 笠松 13 水戸 0-1 柏 2 
04/15 笠松 13 水戸 0-0 鳥栖 0 
05/20 平塚 13 湘南 1-3 水戸 2 
06/07 鳴門 5 徳島 0-0 水戸 0 
07/26 神戸ウイ 13 神戸 2-0 水戸 1 
10/18 佐賀 5 鳥栖 1-0 水戸 1 
10/22 笠松 13 水戸 0-0 仙台 0 
11/11 高知陸 13 徳島 1-2 水戸 2 
03/04 笠松 13 水戸 0-1 山形 2 
03/25 笠松 13 水戸 1-4 福岡 2 
04/01 鳴門 13 徳島 0-0 水戸 0 
06/10 平塚 13 湘南 2-0 水戸 1 
07/25 愛媛陸 5 愛媛 0-0 水戸 0 
08/12 西が丘 13 東京V 2-0 水戸 1 
08/16 笠松 13 水戸 1-1 福岡 0 
09/26 長崎 5 福岡 3-2 水戸 1 
10/10 群馬陸 13 草津 0-0 水戸 0 
03/20 笠松 13 水戸 1-0 甲府 1 
04/26 ユアスタ 13 仙台 3-3 水戸 0 
07/09 熊本 5 熊本 1-3 水戸 2 
09/07 熊本 13 熊本 0-2 水戸 2 
09/07 熊本 5 熊本 0-2 水戸 2 
11/02 西京極 5 水戸 0-3 京都 2 
06/14 国立 13 東京V 0-0 水戸 0 
06/24 岡山 5 岡山 0-1 水戸 2 
08/01 笠松 13 水戸 3-1 栃木 1 
09/02 札幌厚別 5 札幌 1-1 水戸 0 
09/27 正田スタ 13 草津 2-0 水戸 1 
11/29 レベスタ 13 福岡 3-1 水戸 1 
03/06 Ksスタ 13 水戸 2-1 栃木 1 
04/04 柏 13 柏 1-0 水戸 1 
08/01 本城 13 北九州 1-1 水戸 0 
10/13 アウスタ 13 清水 4-1 水戸 1 
11/14 Ksスタ 13 水戸 1-1 札幌 0 
03/05 Ksスタ 13 水戸 2-1 京都 1 
04/03 大銀ド 13 大分 中止 水戸 0 
04/17 ニンスタ 13 愛媛 中止 水戸 0 
06/19 カンスタ 13 岡山 0-1 水戸 2 
08/28 ベアスタ 13 鳥栖 2-1 水戸 1 
11/20 Ksスタ 13 水戸 0-1 栃木 2 
09/09 大銀ド 5 大分 2-2 水戸 0 
10/10 万博 5 G大阪 1-0 水戸 1 
03/31 レベスタ 13 福岡 1-1 水戸 0 
04/21 本城 13 北九州 0-2 水戸 2 
09/22 Ksスタ 13 水戸 1-1 熊本 0 
03/09 ニンスタ 13 愛媛 0-2 水戸 2 
08/03 西京極 13 京都 1-1 水戸 0 
07/08 大銀ド 5 大分 1-1 水戸 0 
11/08 うまスタ 13 熊本 1-1 水戸 0 
02/28 西京極 13 京都 1-1 水戸 0 
03/26 長良川 13 岐阜 1-0 水戸 1 
05/03 鳴門大塚 13 徳島 1-0 水戸 1 
05/22 柏 13 熊本 0-1 水戸 2 
-------------------------------------------

勝率: 26.4151%

指定した2チームの組み合わせの試合データとtotoくじの中間値を出力する。

(?/p/s/d/q) >> d
1st Team ? >> 水戸
2nd Team ? >> 熊本
--- Result --------------------------------
07/09 熊本 5 熊本 1-3 水戸 2 
09/07 熊本 13 熊本 0-2 水戸 2 
09/07 熊本 5 熊本 0-2 水戸 2 
09/22 Ksスタ 13 水戸 1-1 熊本 0 
11/08 うまスタ 13 熊本 1-1 水戸 0 
05/22 柏 13 熊本 0-1 水戸 2 
-------------------------------------------

toto 中間値: 1.33333

終了する

(?/p/s/d/q) >> q

無駄に、githubにプッシュしてある。 github.com まぁ、これを当てにしてあたるかどうかは知らない。