8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

競馬を統計的に予想してみる(その2:レース結果をスクレイピング)

Posted at

目的

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

何回かに分けて目的を達成してく予定

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

環境

  • Raspberry Pi 3 ModelB1
  • Python v3.5.3

作業メモ

レース結果をスクレイピング

参考サイト
レース結果テーブルの情報取得
https://stackoverflow.com/questions/21997587/beautifulsoup-get-text-from-find-all

無駄な改行の削除
https://tonari-it.com/python-strip/

文字列の最後尾から文字を取り出す
http://www.openspc2.org/reibun/Python/string/006/index.html

リストが空か判断
https://qiita.com/yonedaco/items/d0f65ca3dad2e085a51d

スクリプトを作成する

前回同様コードをGitHubに公開済み
https://github.com/marumen/git_netkeiba_scraping

使用方法は上記のREADMEを読んでいただければわかると思われる

$ python result_scraping.py

レース結果のURLを取得 で作成したURLファイル(url_list.txt) に書かれたURLからレース結果を取得して、outputというディレクトリにcsv形式のファイルとして格納する
結果ファイルのフォーマットについては、GitHubにサンプルを挙げているのでそちらを参照ください

注意点

  • 障害レースは対象から外している(数年単位だとデータが少なくなるため)
  • レース結果ファイルがoutputディレクトリに存在する場合は、処理をスキップさせている
  • 処理にかなりの時間(1日単位)がかかるため、時間に余裕があるときの使用をおすすめする2
  • 連続アクセスにならないよう、一定間隔でsleep(5sほど)を持たせている3
  • 大量のファイルを出力するため、空き容量には注意4

まとめ

今回の目的は達成!

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

2. 1のURLからレース結果をスクレイピング <- 今回はこれが目的

次回は以下を実現する

3. 2のデータから統計モデルを作る

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

  2. 参考に今回の環境だと5年分のデータ取得に約1日かかった

  3. robots.txtサイトのTOPに見当たらなかったため、sleepの時間は適当に設定しているが、サイトアクセスの回数がかなり多いため、時間を変更する場合はあまり短くしないように注意

  4. 数年分のデータであれば、100MBもあれば十分

8
7
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
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?