TOP 購入者/紹介者様へ BOOKERSの特徴 販売者様へ BOOKERSの特徴 機能紹介・チュートリアル 定期購読マガジン/メンバーシップ機能申込 公式からのお知らせ 注目記事一覧 特集ページ 競馬予想(New) 競艇予想(New) 競輪予想 パチ/スロ情報 テクノロジー 創作 その他 ログイン 新規登録 新規登録
本記事は割引/還元キャンペーン対象です割引適用へ
本記事は割引/還元キャンペーン対象です割引適用へ
【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 mdi-share-variant mdi-heart-outline 4 テクノロジー
ゆっくりデータサイエンス
mdi-update 無料記事/有料記事無料部分 - 更新時刻
2024年11月13日23:05 mdi-currency-jpy mdi-update 有料記事有料部分 - 更新時刻
2250円 [[ getProduct ]]内容のご確認 【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 - ゆっくりデータサイエンス
[[support_message]]
ログイン/会員登録して購入 閉じる
割引キャンペーンを適用
Youtubeログインしてチャンネル登録で割引に!
Youtubeでログインする 閉じる
2250円
0円当選無料
記事を購入して見る
2250
[[ getProduct ]]内容のご確認 【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 - ゆっくりデータサイエンス
[[support_message]]
この記事は「チャンネル登録で割引」が適用されています。
決済方法 - クレジットカード
有料コンテンツ購入に関する確認事項
キャンセル 決済方法を選択
お支払い方法の選択 クレジットカード以外の決済方法について キャンセル 決済方法を選択
お支払い情報の入力
カード情報 必須
カード名義 必須
有効期限 必須
セキュリティコード 必須
[[pay_error]]
キャンセル
カードで支払う
・確認事項
決済ボタン押下後にカード会社の認証画面に移動しますので、認証を求められた場合は実施ください。 これは不正利用対策のために国から導入義務付けされている本人認証サービス(3Dセキュア)です。
3Dセキュアのパスワード等が分からない場合は こちら をご参照ください。
お支払い情報の確認 以下のカードで決済してよろしいでしょうか?
[[pay_credit_list[pay_select].payment_label]]
【重要】3Dセキュア/本人確認認証にクレジットカード名義が求められるようになったため、追加入力してください
カード名義 必須
キャンセル
カードで支払う
・確認事項
決済ボタン押下後にカード会社の認証画面に移動しますので、認証を求められた場合は実施ください。 これは不正利用対策のために国から導入義務付けされている本人認証サービス(3Dセキュア)です。
3Dセキュアのパスワード等が分からない場合は こちら をご参照ください。
No
お支払い方法の選択 ※d払いが環境によって正常決済できないことがありますが、その場合は一定期間後に自動返金されます。即時残高のお戻しを希望される場合は、お問合せください
購入失敗時のFAQ
携帯キャリア決済以外の決済方法について
キャンセル 決済方法を選択
[[ getProduct ]]内容のご確認 【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 - ゆっくりデータサイエンス
[[support_message]]
この記事は「チャンネル登録で割引」が適用されています。
決済方法 - [[ payment_categories[payment_category] ]]
キャンセル
購入に進む
・確認事項
「購入に進む」ボタン押下後に携帯キャリア決済の認証画面に移動しますので、認証を求められた場合は実施ください。
■注意事項
・「購入に進む」ボタンは1度だけ押してください。ダブルクリックしないでください。二重決済になる可能性があります。
・キャリア側ページで認証・購入確定後、リダイレクトが複数回発生しますが、購入が完了するまでページを閉じずにそのままお待ちください(ページが切り替わった場合には購入が正常に完了しない可能性があります)
割引キャンペーンを適用
Youtubeログインしてチャンネル登録で割引に!
Youtubeでログインする 閉じる
2250円
0円当選無料
記事を購入して見る
2250
[[ getProduct ]]内容のご確認 【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 - ゆっくりデータサイエンス
[[support_message]]
この記事は「チャンネル登録で割引」が適用されています。
決済方法 - [[ payment_categories[payment_category] ]]
有料コンテンツ購入に関する確認事項
キャンセル
購入に進む
・確認事項
「購入に進む」ボタン押下後に携帯キャリア決済の認証画面に移動しますので、認証を求められた場合は実施ください。
■注意事項
・「購入に進む」ボタンは1度だけ押してください。ダブルクリックしないでください。二重決済になる可能性があります。
・認証・購入確定後、リダイレクトが複数回発生しますが、購入が完了するまでページを閉じずにそのままお待ちください(ページが切り替わった場合には購入が正常に完了しない可能性があります)
お支払い方法の選択
保有コイン: [[total_balance.toLocaleString()]] コイン (1コイン=1円)
残高が不足しています。
10%還元 5%還元
チャージ
最短1営業日
mdi-help-circleBOOKERSコインとは
キャンセル 決済方法を選択
[[ getProduct ]]内容のご確認 【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 - ゆっくりデータサイエンス
[[support_message]]
この記事は「チャンネル登録で割引」が適用されています。
決済方法 - [[ payment_categories[payment_category] ]]
キャンセル
購入に進む
mdi-flag 報告

よくあるスクレイピングのサンプルコードを見ると、4重5重ものfor文を回してレース情報を集めている場合が多かったですが、そのやり方実はアクセス先に迷惑をかけている可能性が非常に高いです
少ないアクセス回数で過不足なくレース情報を集められるソースを公開します。

目次
低アクセス回数で競馬データをスクレイピングできるソースを公開します。

0.全ソースを公開しました!

以下記事で、競馬データのスクレイピングから、データの前処理、機械学習モデルの作成、モデル分析用WEBアプリの4機能を有したソースを全て公開しました!
こちらの記事を購入される場合は、全体ソースを入手して頂く方が、今後も全体ソースのバージョン更新予定なので、ぜひご検討ください。

1.目的

 ネットから少ないアクセス回数必要最低限の情報確実に取得するのがスクレイピングの大事なところです。そのため、無駄なアクセス回数を減らすようにスクレイピングのコードを作成することは、1アクセス1,2秒待つマナーと同じぐらい大事なことです。無駄なアクセスが増えるとアクセス先への迷惑にもなるし、実行時間も長くなるという双方とも不幸になりかねません。
 しかし、現在出回っている競馬データをスクレイピングするコードは無駄なアクセスを1,000回余りも行っているものを教本かのように公開されているのが現状です。(※1)
 そのため、本記事では無駄なアクセスを減らす工夫を取り入れたスクレイピング用のソースを共有します。
注意:普通じゃコピペできないようになっているようです。(工夫すればコピペはできるけど、、) 使用する方は写経覚悟で購入ください。
(※1) こちらのサイトの冒頭を参照↓
【2024年最新版】Pythonで競馬データを効率よくスクレイピングする方法:競馬予想プログラムソフト開発 | ゆっくりデータサイエンスLab (keiba-ds-lab.com)

2.前提事項

2.1 想定する利用者

  • Pythonを使っている方
  • 競馬予想がしたい方
  • スクレイピングして競馬データの収集をしている方
 本ソースはPythonの勉強目的を主としています。そのため、スクレイピングを容認・推奨はしていないことご承知おきください。つまり、本ソースは間違ったスクレイピングをしないためにはどうすればいいか?→アクセス回数を減らす努力をしましょう。ということを伝えるものです。
 すでに他の競馬予想プログラム販売者からスクレイピングコードを購入された方も、少なくとも仕組みを確認して自身のコードに落とし込むようにしましょう。

2.2 ソースコードのコアな部分は共有済

ソースコードの根本的なアイデアとなっている部分は別サイトで公開しています。私が管理運営しているサイトなので、良ければ立ち寄ってください。
サイトURL:【2024年最新版】Pythonで競馬データを効率よくスクレイピングする方法:競馬予想プログラムソフト開発 | ゆっくりデータサイエンスLab (keiba-ds-lab.com)
上記サイト記事を参考に自力でできる場合は、ご自身で作成されることをおすすめします
本記事で共有するソースは、スクレイピングしたHTMLソースをデータベース(sqlite3)へ保存するようにしているので、宗教上の理由で別の形式で保存管理したい方などは、自力作成した方が良いかと思います。予めご了承ください。

2.3 動作環境

動作環境とは、現状動作確認ができている環境ということです。Windowsで開発していますが、おそらくMacやLinuxでも動くはずです。
  • Windows 10 pro
  • メモリ32GB
  • Python3.10.5

2.4 必要なPythonパッケージ

以下に必要なパッケージをリストします。pandasとか近々バージョンが変わりそうな気配なので、バージョンも明示的に指定してpipインストールすることをおすすめします。
※購入された方で、パッケージのバージョン依存によるコマンドエラーが起きた場合は対応出来かねますので、なるべく揃えていただけると問題があった際にフォローしやすいかと思います。。。
  • pandas==2.1.1
  • numpy==1.26.1
  • tqdm==4.66.1
  • Beautifulsoup4==4.12.2
  • requests==2.31.0

3.プログラム仕様

3.1 フォルダ構成

以下プログラム動作時に前提となるフォルダ構成です。事前に記載のあるフォルダは作成していただくようお願いします。
中括弧「<>」でくくられているのがフォルダ名。それ以外はファイル名です
また、<any-dir>任意のフォルダ名です。作業用フォルダなので、お好きな名前にしてください
有料記事部分では、この各種ファイルの中身を上から順番に列挙しています。
ソース内にコメントを残していたりいなかったりしていますが、なるべく1機能1メソッド単位で作成しているので、内容を理解したい方はぜひ読み込んでみることをおすすめします。

3.2 コマンド仕様

3.1で説明したフォルダ構成のうち、コマンドプロンプトで実行するのはcmd_first_scraping.batcmd_scraping.batの2ファイルです。
MacやLinuxの場合、batファイルは実行できないのですがファイルの内容を見ていただければ、MacやLinuxを使用している方なら容易に理解できる内容になっていると思います。(単順に引数指定してmain.pyを実行しているだけなので。)
なので、shellスクリプトは用意していません。(shellスクリプトを実行できる環境がないためでもあります。すみません、、)

cmd_first_scraping.bat

一番最初に実行するものです。2010年から2024年最新のレース情報まで欲しい場合は以下のコマンドを実行してください。
cmd_first_scraping.bat --all --start-year 2010 --end-year 2024
ヘルプが見たい場合は以下を実行。指定できる引数オプションについて知ることができます。
cmd_first_scraping.bat --help
そんなにいらない場合は、--start-year 2015とか好きな開始年度を指定してください。

cmd_scraping.bat

定期的に実行して最新のレース情報を取得したい場合に実行するものです。
以下のコマンドを実行してください。特に引数は不要です。
cmd_first_scraping.bat
ヘルプが見たい場合は、先ほどと同様に「--help」をつけて実行してください。

3.3 実行したらどうなる?

3.2で説明したコマンドを実行すると、3.1で説明したフォルダ構成の<data>フォルダの配下に「keibahtml.db」と「keibadata.db」の二つのデータベースファイルが作成されます。
keibahtml.dbには、スクレイピングしてきたサイトのHTMLソースが管理されます。(1年分を取得するのに約1GBストレージを使用します。ご注意ください。)
keibadata.dbには、HTMLソースを解析して必要なテキスト情報を抜き出した情報が入っています。
DB Browser for SQLiteというフリーソフトを使えば、データベースファイルにどのようなテーブルがあって、どのようなレコードが入っているのかが簡単に確認できます。
DBでデータを管理したいモチベはこのようなフリーソフトで簡単に中身を見れるからです。
pickleファイルで管理したい人もいらっしゃるかと思いますが、pickleファイルの中身を見るにはわざわざファイルをloadする処理を書いて標準出力なりする必要がありなかなか面倒だと思います。あくまでSQLite用ですがデータベースファイルの中身をUIベースで確認できるフリーソフトがあるのは魅力だと思います。
以下は、実際に自分がスクレイピングしたときのkeibadata.dbの中身になっています。こんな感じでデータが取れます。参考までにどうぞ。
テーブル一覧
raceinfo2024の内容:レース情報
racedata2024の内容:出走馬情報
racerefund2024の内容:払戻情報
他にも馬の出生日血統情報などを含んだテーブルも入っています。

4.有料範囲の内容

有料範囲では、3.1で説明したフォルダ構成でファイル名となっている箇所のソースを上から順に列挙しています。
すべてで9コードになります。
コード量は以下表を参照ください。配置先フォルダは上記フォルダ構成にあるフォルダ名に準拠しています。
配置先フォルダ
ファイル名
コードのみ行数
概要
<any-dir>/<src>/<core>/<db>
controller.py
89行
DBを操作するための関数が入っています。
<any-dir>/<src>/<core>/<meta>
scrape_url.py
16行
スクレイピング先URLの情報
<any-dir>/<src>/<core>/<meta>
table_info.py
138行
DBのテーブル情報を管理するクラスが入っています。
<any-dir>/<src>/<core>/<util>
data_operator.py
5行
若干ややこしい処理を関数化して使いやすくする関数が入っています。あまり使いどころがないです。
<any-dir>/<src>/<scraping>
data_scraper.py
364行
HTMLソースを取得しDBへ登録するクラスです。
<any-dir>/<src>/<scraping>
process_htmlsrc.py
460行
HTMLソースを解析して、必要なテキスト情報を抜き出し、DBへ登録するクラスです。
<any-dir>/<src>/<scraping>
main.py
81行
code 5とcode 6を実行する関数が入っています。code 6については並列処理化しています。
<any-dir>
cmd_first_scraping.bat
1行
一番最初に実行するコマンドです。使い方は3.2節参照
<any-dir>
cmd_scraping.bat
3行
更新されたレース情報だけを差分で取得するコマンドです。使い方は3.2節参照
クラス定義等はオブジェクト指向フル無視のなんちゃってクラス定義になっています。
個人開発レベルのものなので特に自分は気にしない派ですが、宗教上の理由でどうしても許容できない方は適宜修正ください。

5.留意事項

有料記事を購入検討されている方へ、購入する前にご一読ください。
本記事を購入された際は以下の留意事項に同意したものとします。予めご了承ください。
  1. 本ソースは商品ではなく勉強目的で使用されることを想定して作成しました。バグ取りは十分できていないので、購入者様側でバグ対応をしていただく必要があります。
  2. 本ソースはコピーガードされています。コード行数が1,000行ありますので、根気が必要なのとタイプミスにはお気を付けください。
  3. 本ソースを使用したことによって、購入者様に不利益や違法行為があった場合でも本ソース作成者は一切の責任を負わないことご承知おきください。
  4. 基本的には写経すれば動くプログラムになっていますが、内容を理解したい場合はPythonの入門書レベルの文法を理解していることを前提としています。
 項番1については、プログラム書く以上バグは絶対に直面するものです。挫けずにバグ対応しましょう。必ず良い勉強機会になります。
 エラー内容をコピペして調べると、必ずどこかで同じ目に合っている人がいます。そしてそれを解決してくれる通りすがりのプログラマが答えやヒントを出してくれています。わからなければまずは調べることを徹底してください。頑張りましょう。

6.宣伝

これから今回のような競馬予測ソフトを開発の工程や実際のソース公開をリアルタイムで更新していきます。
YouTubeでソースのエッセンス部分の紹介、運営サイトでソースの重要な処理部分の紹介をしているので、良ければYouTubeや運営サイトも立ち寄っていただけると嬉しいです!
Twitter(自称X)もやっていますので、フォローよろしくお願いします!
また、YouTubeのチャンネル登録していただけると、1000円引きで購入できます
記事を購入して続きを見る

この続き:51774文字

【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法
ゆっくりデータサイエンス
2250円
記事を購入して続きを見る
2250円

もしくは

既に抽選済みです チャンネル登録で割引 2250円
1250円

もしくは

メンバーシップ 定期購読マガジン
[[magazine.title]]
ゆっくりデータサイエンス
[[magazine.price]]円/月
[[magazine.description]]
mdi-gift-outline [[ item ]]
本記事の メンバーシップ 定期購読マガジン を購入する
mdi-gift-outline 記事を気に入ったらサポート ゆっくりデータサイエンスさんをサポート 【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法 金額
100円
500円
1000円
ログイン/会員登録して購入 閉じる
ゆっくりデータサイエンス
競馬予想ソフトの作成動画を投稿しています。 後々には競馬予想も公開できればと思っています。 よろしくお願いします。
mdi-home fab fa-x-twitter
新着記事
ゼロから作る競馬予想モデル・機械学習入門
無料!競馬予想AIモデル分析基盤um-AI
【競馬予想プログラムソフト#3】コピペOK!モデル管理分析クラスver 0.2
【競馬予想プログラムソフト#2】コピペOK!ベース前処理ver 0.1
【競馬予想プログラムソフト#1】低アクセス回数で競馬データをスクレイピングする方法
Copyright © 2020 - [[ new Date().getFullYear() ]] BOOKERS All rights reserved.