先日、Twitterで競馬についてのツイートをみました。ある大学生さん、自作のAIに有馬記念を予想させ、118万当たったというツイートがネットで話題になりました。本当にAIに予想できるの、競馬というもの?
グーグルしてみると、競馬予想の方法が様々ですが、AIは今年から登場しました。AIは統計解析によって競馬の結果を予測しているそうです。競馬にも技術介入の時代ですね。
ですが、競馬の統計解析を行うには、解析するためのデータがなければ何も始まりません。ということで、今回は競馬のデータをスクレイピングしてみることにします。
今回、JRA公式サイトのデータソースをスクレイピングします。JRA公式サイトには、有馬記念はもちろん、過去の様々なレースの成績データを見ることができます。
データを取得にはOctoparseを使います。Octoparseは使いやすいWebスクレイピングツールで、プログラミングを必要としなく誰でも簡単にWebデータを取得できます。これから、2019年の有馬記念のデータを収集します。
さて、始めましょう!
#ステップ1. 対象のWebページを設定する
Octoparseを起動して、ホーム画面の「カスタマイズモード」に表示されている「+ タスク」ボタンをクリックします。「Webサイト」に対象のURLを入力し、「URLを保存する」ボタンをクリックします。
下記のURLを使います。
#ステップ2. 取得する項目を設定する
今回は着順、馬名、騎手、調教師などテーブルにあるデータを全部取得します。
まず、着順の「1」をクリックすると、緑色に変わり、選択されたことを示します。残りの着順は赤色に変わり、類似した要素として識別されたことを示します。各行目のデータを行別で取得するには、「操作ヒント」でエリア拡大のボタンをクリックし、一行目のデータが全部選択されるようにします。テーブルの構造だから、ソースコードには各行のタグは「TR」です。
各行にあるデータを細かく取得するため、「操作ヒント」で「すべてのサブ要素を選択する」をクリックします。そうすると、16行にあるデータはすべて選択され、「すべて選択」、「選択したデータを抽出する」を順番にクリックすると、Octoparseはデータを抽出します。
フィールド名を編集し、余計なデータを削除することもできます。
「ループアイテム」の各項目をクリックして、データが正しく抽出されるかどうかを確認することができます。
検証したところ、「枠」のデータが取得されません。その部分は画像で表示されるのです。しかし、その数字は画像のURLに隠されています。そのため、まず画像のURLを取得し、それから数字を取得します。
「枠」の画像をクリックし、「操作ヒント」で「選択した画像のURLを抽出する」をクリックすると、データを取得できます。
画像のURLから数字を取得には、2つの方法があります。1つはエクセルの「切り替える」機能です。もう1つはOctoparseのデータ再フォーマット機能です。どっちでも簡単ですので、ここでは省略します。
#ステップ3. データ抽出を実行する
これで、スクレイピングのワークフローが完成しました。簡単でしょう!「抽出の開始」をクリックし、「ローカル抽出」を選択し、実行してみると、とてもきれいにまとまてくれました!
この方法でほか年度のデータも取得できます。競馬のデータはほぼテーブルで表示されるから、テーブルのスクレイピングを把握すれば、簡単に取得できますね。最近、Octoparseは初心者への「Hello World」を用意し、テストサイトを使って、スクレイピングの方法を紹介しています。テーブルのスクレイピングデモもありますので、必要があれば、参考してみてください。
分析し予測しようとしますが、手元に適当な統計モデルがないし、やる気も尽きてしまったので、今回はここまでにしましょう(笑)。もし皆さんが予測モデルがあれば、教えてくださいね!