LoginSignup
11
13

More than 5 years have passed since last update.

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

Posted at

目的

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

何回かに分けて目的を達成してく予定
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にしています。いくらでも自由に使ってください。改善点などあれば(改善点だらけかもしれませんが・・)、教えてもらえると個人的に非常にありがたいです。 

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13