ワールドカップのデータとか

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で見てみると、、、
選手一覧もJSONAPIあるじゃねーか!
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サッカーやってくりよ誰か!

追記

今日に限ってオフラインすぎるぜお前ら・・。

うっかりここまで作っちまった。

  • 統計情報出る
  • ゲームごとの情報出る
  • シュートは枠内シュート率とかPA内シュート数とか出る
  • 走行距離と時間辺りの走行距離出る
  • パスは短中長と合計の本数と成功率出る
  • 与えた/受けたファール数出る


背番号がわからんのと、クロス成功率やCastrol Indexを統計に出してないとか、より詳細情報見るためにFIFAのページにジャンプしたいとか、そのくらいならすぐ出来るぞ。
誰かホスティングしてくれー。


20100627追記 ホスティングしてもらいました。http://wc.gapps.jp/