Code:
import pandas as pd
from selenium import webdriver
cols = ['Player','Category','Line','Over Odds','Under Odds']
props = pd.DataFrame(columns = cols)
driver = webdriver.Chrome('Path to your chrome driver')
driver.get('https://sportsbook.draftkings.com/event/180314630?category=odds&subcategory=batter-props')
tables = driver.find_elements_by_xpath('//div[@class="sportsbook-event-accordion__wrapper expanded"]')
for x in tables[1:5]:
eventype = x.find_element_by_xpath('.//a[@aria-current="page"]').text
rows = x.find_elements_by_xpath('.//tr')
if eventype == 'Home Runs':
betype = 'HR'
elif eventype == 'Hits':
betype = 'Hits'
elif eventype == 'Total Bases':
betype = 'TB'
elif eventype == 'RBIs':
betype = 'RBI'
elif eventype == 'Runs Scored':
betype = 'Runs'
else:
betype = 'Error'
for z in rows[1:]:
currentbet = pd.DataFrame(columns = cols)
currentbet.at[0,"Player"] = z.find_element_by_xpath('.//span[@class="sportsbook-row-name"]').text
currentbet.at[0,"Category"] = betype
currentbet.at[0,"Line"] = z.find_element_by_xpath('.//span[@class="sportsbook-outcome-cell__line"]').text
betodds = z.find_elements_by_xpath('.//span[@class="sportsbook-odds american default-color"]')
currentbet.at[0,"Over Odds"] = betodds[0].text
currentbet.at[0,"Under Odds"] = betodds[1].text
props = props.append(currentbet)
props.to_csv('MLBpropscrape.csv')
driver.close()