ワールドカップのデータとか
FIFAが公開してる情報とか
ワールドカップで選手の走行距離とかよく出るっしょ?
あれのデータ、大本はどうやらFIFAみたいで、この辺のページらしい。
http://www.fifa.com/worldcup/statistics/players/distanceandspeed.html
で、見てみようとするんだけど、なんか知らんがめっさ見にくい。
統計情報なのに試合ごとの統計が見にくすぎるし、スタメン11人の統計とか見れないとデータ対戦が出来ないじゃないか!
データマニアとしてこれは苦しい・・!
ということで
やるか。
やっちゃうか。
えーと、まずは、
http://www.fifa.com/worldcup/teams/index.html
でチーム一覧をとってきて、日本のIDが「43819」なので、
http://www.fifa.com/worldcup/teams/team=43819/squadlist.html
で選手一覧をとってくる・・。
ってHTMLに全然IDやクラスがふられてねぇ。
やってられるか!
と思いつつ、FireBugで見てみると、、、
選手一覧もJSONのAPIあるじゃねーか!
http://www.fifa.com/worldcup/statistics/teams/team=43819/teamplayersstats.txt
え、しかもこれで阿部さんデータ一覧とれる!
http://www.fifa.com/worldcup/statistics/players/player=188456/mstat.txt
"+"押して個別にデータとってきてるのかと思えば、このAPIで全データとれんじゃん!
うっひょぅ!!
作ってみる
ajax面倒くさいんで手元にあったjqueryをサーバにアップして。
エラー処理とかも面倒くさいんでやらんで。
javascriptのセキュリティも面倒くさいんでサーバ側で簡単なプロキシでも作って。
あんまり迷惑かけるとあれなんで一応5秒に1回くらいリクエストするとして・・!
こ、こうか・・!?
<html> <head> <title>test</title> <script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> var team_id="43819"; var wait_count = 0; var datas = []; function go() { if (wait_count > 0) return; var con = $("tbody"); var lines = []; for (var i=0; i<datas.length; i++) { var distances = datas[i]; var t = "<td>"+datas[i].id+"</td><td>"+datas[i].name+"</td>" +"<td>"+distances.total+"</td>"; for (var j=0; j<distances.matches.length; j++) { t += "<td>"+distances.matches[j].distance+"</td>"; } lines.push(t); } con.html("<tr>"+lines.join("</tr>\n<tr>")+"</tr>"); } function getData(id,name) { $.ajax({ url: "get_data?id="+id, cache: false, dataType: "json", success: function(data){ wait_count--; var ret = { id: id, name: name, total: data.distance.value, matches: [] }; for (var i=0; i<data.matches.length; i++) { ret.matches.push({ distance : data.matches[i].distance }); } datas.push(ret); go(); } }); } $(function() { $.ajax({ url: "get_players?id="+team_id, cache: false, dataType: "json", success: function(data){ for (var i=0; i<data.items.length; i++) { wait_count++; setTimeout("getData("+data.items[i].IdPlayer+", \""+data.items[i].PlayerName+"\")", 50 00*i); } } }); }); </script> </head> <body> <div id="container"> <table> <thead> <th>id</th> <th>name</th> <th>total</th> <th>game 1</th> <th>game 2</th> <th>game 3</th> </thead> <tbody> </tbody> </table> </div> </body> </html>
とりあえずチーム固定、ゲーム数も固定で。
とるデータは走行距離だけね。
プロキシはphpでこういうの書けばok。
<?php echo file_get_contents('http://www.fifa.com/worldcup/statistics/teams/team='.$_GET['id'].'teamplayersstats.txt'); ?>
readfileでいいんだっけ?
とってみる
で、取得出来たデータ。
198117 | Eiji KAWASHIMA | 12.02 | 4.17 | 3.42 | 4.42 |
211976 | Keiji TAMADA | 2.06 | 2.06 | ||
185525 | Kisho YANO | 1.66 | 1.66 | ||
177771 | Junichi INAMOTO | 1.22 | 0.8 | 0.41 | |
198751 | Daisuke MATSUI | 24.5 | 8.02 | 7.47 | 9.01 |
289027 | Makoto HASEBE | 30.7 | 10.1 | 9.13 | 11.47 |
210717 | Marcus Tulio TANAKA | 27.99 | 9.11 | 9.36 | 9.52 |
286278 | Shinji OKAZAKI | 8.51 | 3.57 | 2.42 | 2.51 |
184373 | Yasuyuki KONNO | 0.52 | 0.52 | ||
180936 | Yoshito OKUBO | 29.28 | 9.3 | 8.68 | 11.29 |
233500 | Keisuke HONDA | 32.49 | 11.09 | 10.34 | 11.05 |
177768 | Yasuhito ENDO | 33.18 | 11.26 | 11.01 | 10.91 |
180928 | Yuichi KOMANO | 31.12 | 10.4 | 9.91 | 10.81 |
177765 | Yuji NAKAZAWA | 27.42 | 8.98 | 9.11 | 9.34 |
188456 | Yuki ABE | 32.19 | 10.59 | 10.77 | 10.82 |
177773 | Shunsuke NAKAMURA | 4.16 | 4.16 | ||
291372 | Yuto NAGATOMO | 32.44 | 10.88 | 10.76 | 10.8 |
あ、あれ?なんか人数少なくね?
ヨシカツさんとかいないっすよ?
・・あれ?今野さんとかもデータ足らなくね?
とおろおろしてみたけど、要はデータがとれている人しかteamplayersstats.txtではとれないみたいなのと、matchesには出場したゲームしか含まれないだけからっぽいすね。
ちょい改善するだけで完成するね!!
お願いしてみる
ということで、誰か作って公開してくれませんかね。
俺は今自由に出来るサーバが無いんで。あるっちゃあるけど諸事情で公開出来るURLを作れないんで無理っす。
データ漬けの野球で鍛えられた日本人には、やっぱりショートパスの成功率は遠藤がすごいねとか、意外に大久保がロングパス出してるんだねとか、大好きだと思うんだよな。
作ればそこそこアクセス稼げるぜ絶対。
誰かやって、ものっそいデータ解析サイト作ってくれないか期待。
IDサッカーやってくりよ誰か!