Python
GitHub
スクレイピング

競馬を統計的に予想してみる(その1:レース結果のURLを取得)

目的

競馬を統計的に予想したい!

何回かに分けて目的を達成してく予定
1. レース結果のURLを取得 <- 今回はこれが目的
2. 1のURLからレース結果をスクレイピング
3. 2のデータから統計モデルを作る
4. 予想してみる

環境

  • Raspberry Pi 3 ModelB1
  • Python v3.5.3

作業メモ

事前準備

作業用の環境を準備して、必要なパッケージをインストールする

  • 仮想環境の準備
$ python3 -m venv tmp
$ source tmp/bin/activate

以下のように先頭に(tmp)が付けばOK

(tmp) pi@raspberrypi:### $
  • beautifulsoup4のインストール
$ pip3 install beautifulsoup4
(略)
Successfully installed beautifulsoup4-4.6.0

レース結果のURLを取得

以下のサイトからレース結果が載っているURLを取得するスクリプトを作成する
http://www.netkeiba.com/

参考サイト
Pythonはかなりの初心者のため、色々なサイトを参考にさせていただいた

コマンドライン引数の取得
https://www.python-izm.com/basic/command_line_arguments/

Noneの判断
https://www.sejuku.net/blog/50205

sleepの追加
https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406

docstringの追加
http://jutememo.blogspot.com/2008/08/python_28.html

  • スクリプトを作成する

細かいところの説明は省くが、コードを以下に公開してみる2
https://github.com/marumen/git_netkeiba_scraping

上記のREADMEを読んでいただければ使い方はわかると思うが、ざっくり書くと以下のように使用する

$ python html_scraping.py [year]

[year]から今年までのレース結果URLをurl_list.txtというファイルへ出力するスクリプトを作成した
例えば、[year]2016とすると、2016年から今年(2018年)までのレース結果のURLが取得できる

  • 注意点

    • 連続アクセスにならないように、一定間隔でsleep(5sほど)を持たせている。そのため、処理は正直遅いと思われる
    • 数年分(5年分)の取得は動作確認済みだが、それ以上長い期間は動作未確認。ただし個人として実使用でそこまで長い期間のデータを取得する必要性がないため、これで公開している。

まとめ

今回の目的は達成!

競馬を統計的に予想したい!

何回かに分けて目的を達成してく予定
1. レース結果のURLを取得 <- 今回はこれが目的

次回は以下を実現する

2. 1のURLからレース結果をスクレイピング


  1. ラズパイ上で動作させることは必須ではないが、今後スタンドアローンで動かせるようにしていきたいため、ラズパイを使用 

  2. 正直GitHubとPythonの勉強のために公開しているだけなので、ライセンスもMITにしています。いくらでも自由に使ってください。改善点などあれば(改善点だらけかもしれませんが・・)、教えてもらえると個人的に非常にありがたいです。