pythonのコピペで作るAI競馬予想

参考プログラムをコピペだけで作れます。

【基礎知識編】

当日のデータ

変数名 内容
kai 第何回目か
day 開催何日目か
race_num 何Rか
field 芝orダート
dist 距離
turn どっち回りか
weather 天気
field_cond 馬場状態
place 開催場所
sum_num 何頭立てか
prize 優勝賞金
horse_num 馬番
sex 性別
age 年齢
weight_carry 斤量
horse_weight 馬体重
weight_change 馬体重の変化量
l_days 前走から何日経過したか


過去3レースのデータ(01→前走、02→2レース前、03→3レース前)

変数名 内容
p_place 開催場所
p_weather 天気
p_race_num 何Rか
p_sum_num 何頭立てか
p_horse_num 馬番
p_rank 順位
p_field 芝orダート
p_dist 距離
p_condi 馬場状態
p_condi_num 馬場指数
p_time_num タイム指数

これらを考える。

ref


ここからコピペするだけで結果へlets go!



 -------------- ここからコピペ-----------------------------------------------

#スクレイピングに必要なモジュール
import requests
from bs4 import BeautifulSoup
import pandas as pd
# レースIDの作成
import itertools
YEAR = ['2020']
CODE = [str(num+1).zfill(2) for num in range(10)]
RACE_COUNT = ['01']
DAYS = ['01']
RACE_NUM = ['01']
race_ids = list(itertools.product(YEAR,CODE,RACE_COUNT,DAYS,RACE_NUM))
# サイトURLの作成
SITE_URL = ["https://race.netkeiba.com/race/result.html?race_id={}".format(''.join(race_id)) for race_id in race_ids]
import time #sleep用
import sys #エラー検知用
import re #正規表現
import numpy #csv操作
import pandas as pd
result_df = pd.DataFrame()
#サイトURLをループしてデータを取得する
for sitename,race_id in zip(SITE_URL,race_ids):
# 時間をあけてアクセスするように、sleepを設定する
time.sleep(3)

try:
# スクレイピング対象の URL にリクエストを送り HTML を取得する
res = requests.get(sitename)
res.raise_for_status() #URLが正しくない場合,例外を発生させる
# レスポンスの HTML から BeautifulSoup オブジェクトを作る
soup = BeautifulSoup(res.content, 'html.parser')
# title タグの文字列を取得する
title_text = soup.find('title').get_text()
print(title_text)
#順位のリスト作成
Ranks = soup.find_all('div', class_='Rank')
Ranks_list = []
for Rank in Ranks:
Rank = Rank.get_text()
#リスト作成
Ranks_list.append(Rank)
#馬名取得
Horse_Names = soup.find_all('span', class_='Horse_Name')
Horse_Names_list = []
for Horse_Name in Horse_Names:
#馬名のみ取得(lstrip()先頭の空白削除,rstrip()改行削除)
Horse_Name = Horse_Name.get_text().lstrip().rstrip('\n')
#リスト作成
Horse_Names_list.append(Horse_Name)
#人気取得
Ninkis = soup.find_all('span', class_='OddsPeople')
Ninkis_list = []
for Ninki in Ninkis:
Ninki = Ninki.get_text()
#リスト作成
Ninkis_list.append(Ninki)
#枠取得
Wakus = soup.find_all('td', class_=re.compile("Num Waku"))
Wakus_list = []
for Waku in Wakus:
Waku = Waku.get_text().replace('\n','')
#リスト作成
Wakus_list.append(Waku)
#コース,距離取得
Distance_Course = soup.find_all('span')
Distance_Course = re.search(r'.[0-9]+m', str(Distance_Course))
Course = Distance_Course.group()[0]
Distance = re.sub("\\D", "", Distance_Course.group())
df = pd.DataFrame({
'レースID':''.join(race_id),
'順位':Ranks_list,
'枠':Wakus_list,
'馬名':Horse_Names_list,
'コース':Course,
'距離':Distance,
'人気':Ninkis_list,
})

result_df = pd.concat([result_df,df],axis=0)

except:
print(sys.exc_info())
print("サイト取得エラー")

-------ここまでコピペ----------------------------------------

実行すると下記が現れる。


2歳未勝利 結果・払戻 | 2020年7月25日 札幌1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年6月13日 函館1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年4月11日 福島1R レース情報(JRA) - netkeiba.com
4歳以上障害未勝利 結果・払戻 | 2020年5月9日 新潟1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年2月1日 東京1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年1月5日 中山1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年2月29日 中京1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年1月5日 京都1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年2月29日 阪神1R レース情報(JRA) - netkeiba.com
3歳未勝利 結果・払戻 | 2020年1月18日 小倉1R レース情報(JRA) - netkeiba.com


さらに結果を表示するには・・・。

-------------------ここからコピペ--------------------
result_df = pd.concat([result_df,df],axis=0)

-----ここまでコピペ----------------------------------

レースID 順位 枠 馬名 コース 距離 人気
0 202001010101 1 6 ウインルーア 芝 1800 3
1 202001010101 2 2 アークライト 芝 1800 2
2 202001010101 3 3 ギャラントウォリア 芝 1800 1
3 202001010101 4 1 ジュンブーケ 芝 1800 4
4 202001010101 5 4 キタノマンゲツ 芝 1800 5
... ... ... ... ... ... ... ...
8 202010010101 9 2 キタノシャンティ ダ 1000 12
9 202010010101 10 3 テイエムピカピカ ダ 1000 11
10 202010010101 11 4 ヨドノエール ダ 1000 3
11 202010010101 12 6 ヒノカミ ダ 1000 10
12 202010010101 13 6 カシノギルガメシュ ダ 1000 13


これが表示される.

*プログラムのバグについては責任をとりません。

*このプログラムを使用し、損害が生じても著作者、出版者など一切の損害を責任取りません。ご自由に、ご計画的に、自己責任です!






https://snuow.com/2020/11/
















ref

:https://qiita.com/Mshimia/items/6c54d82b3792925b8199



この記事が気に入ったらサポートをしてみませんか?