質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

560閲覧

netkeibaにおけるpythonでの単勝、複勝オッズのデータ取得

yoshio_utk

総合スコア0

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/02/23 08:26

実現したいこと

表題の通りのことでご相談させていただきます。
pythonでnetkeibaから単勝オッズ、複勝オッズのデータ取得を実現したいと考えています。

前提

python の pandas でのデータ取得を試みています。
初学者であり、前提となる知識や情報が欠落している可能性も大いにあります。
ご指導いただければ幸いです。

発生している問題・エラーメッセージ

オッズが ---.- とハイフンになってしまう。

枠 馬 番 印 選択 馬名 オッズ 0 1 1 NaN NaN カテドラル ---.- 1 1 2 NaN NaN レッドランメルト ---.- 2 2 3 NaN NaN テイエムスパーダ ---.- 3 2 4 NaN NaN レッドベルオーブ ---.- 4 3 5 NaN NaN ゴールドギア ---.- 5 3 6 NaN NaN ヒンドゥタイムズ ---.- 6 4 7 NaN NaN バジオウ ---.- 7 4 8 NaN NaN インテンスライト ---.- 8 5 9 NaN NaN サトノエルドール ---.- 9 5 10 NaN NaN フォルコメン ---.- 10 6 11 NaN NaN ダンディズム ---.- 11 6 12 NaN NaN ウイングレイテスト ---.- 12 7 13 NaN NaN ホウオウエミーズ ---.- 13 7 14 NaN NaN ロングラン ---.- 14 8 15 NaN NaN フォワードアゲン ---.- 15 8 16 NaN NaN アルサトワ ---.-

該当のソースコード

単勝オッズの取得を試みたコードです。

Python

1import pandas as pd 2url = "https://race.netkeiba.com/odds/index.html?type=b1&race_id=202310020411&rf=shutuba_submenu" 3df = pd.read_html(url,header=0)[0] #[1]で複勝オッズを取得 4df

試したこと

オッズは別のページにも表示されていたため、
urlを
https://race.netkeiba.com/race/shutuba.html?race_id=202310020411&rf=race_submenu
と変更して取得を試みましたが、やはり取得できませんでした。
オッズは別の取得方法でないとならないのでしょうか?
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

API(https://race.netkeiba.com/api/api_get_jra_odds.html) を利用する場合。

python

1import pandas as pd 2 3race_id = "202310020411" 4url = f"https://race.netkeiba.com/odds/index.html?type=b1&race_id={race_id}&rf=shutuba_submenu" 5df = pd.read_html(url,header=0) 6df1 = df[0] # 単勝オッズ 7df2 = df[1] # 複勝オッズ 8 9# オッズデータを取得 10js = pd.read_json(f"https://race.netkeiba.com/api/api_get_jra_odds.html?race_id={race_id}&type=1").loc['odds', 'data'] 11df1['オッズ'] = [float(o[0]) for _, o in sorted(js['1'].items())] 12df2['オッズ'] = [f'{o[0]}-{o[1]}' for _, o in sorted(js['2'].items())] 13 14print(df1) 15print(df2)

投稿2023/02/23 10:21

melian

総合スコア19809

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オッズ情報は後から読み込まれているのでselenium等でレンダリングを終えてから取得すればよいのではないでしょうか?

https://stackoverflow.com/questions/55360166/pandas-read-html-no-tables-found

from selenium import webdriver import pandas as pd driver = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe') driver.get("https://www.wunderground.com/history/daily/us/wi/milwaukee/KMKE/date/2013-6-26") html = driver.page_source tables = pd.read_html(html) data = tables[1] driver.close()

投稿2023/02/23 08:41

a.com

総合スコア871

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問