前提・実現したいこと
・「netkeiba.com」という競馬情報サイトから「ワイド」のオッズを取得したい(スクレイピング)。
・今回、あるレース(朝日セントライト記念)のワイドのオッズを取得するため、オッズ関するページ「https://race.netkeiba.com/?pid=odds&id=c201906040511&mode=top」から情報の取得を試みる。
補足
・本ページは各馬券種類の「上位人気一覧」が記載されており、
ページ中のタブから馬連、ワイド等各種馬券のオッズ一覧のページに遷移できる構成(ただし、遷移後のページはTOPページとURLは共通)
発生している問題・エラーメッセージ
何故か「ワイド」ページのオッズでなく
「上位人気一覧」ページの情報を取得してしまう。
出力
<span class="fuku_odds odds_low">2.0</span>,
<span class="fuku_odds odds_low">2.5</span>,
<span class="fuku_odds odds_low">2.1</span>,
<span class="fuku_odds odds_low">2.6</span>,
・・・
↑これは複勝上位人気
「上位人気一覧」ページの「fuku_odds」タグの情報を取得してしまっているようです。
該当のソースコード
Python3
1 2from bs4 import BeautifulSoup 3import pandas as pd 4from selenium import webdriver 5 6#ブラウザを指定して起動 7driver = webdriver.PhantomJS() 8#オッズのページにアクセス(朝日セントライト記念) 9driver.get('https://race.netkeiba.com/?pid=odds&id=c201906040511&mode=top') 10#「ワイド」ボタンを指定して押す(ワイドのオッズを表示したい) 11driver.find_element_by_link_text("ワイド").click() 12 13#ワイドのオッズが表示されたページのソース 14page_source = driver.page_source 15soup = BeautifulSoup(page_source, 'html.parser') 16 17dst = '' 18#ワイドのオッズのページにおいて、ワイドオッズを取得 19dst = soup.find_all('span', attrs=['class', 'fuku_odds']) 20dst 21
試したこと
試しに「ワイド」のページに遷移できているか確認するため、
driver.find_element_by_link_text("ワイド").click()
の後に、スクショを撮る操作を加えたところ、
確かに「ワイド」のオッズページのスクショが撮れ、ページの遷移はできているみたいです。
補足情報(FW/ツールのバージョンなど)
Win10環境
Jupyter Notebook環境で実行しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/22 02:35
2019/09/22 03:01
2019/09/22 03:05
2019/09/22 03:33
2020/07/25 05:06
2020/07/25 12:58