|
| 1 | + |
| 2 | + import requests, bs4 |
| 3 | + from tabulate import tabulate |
| 4 | + from selenium import webdriver |
| 5 | + |
| 6 | + |
| 7 | + #Team Dictionary helps to make urls for boxscore and for full-forms of abbrevation of teams |
| 8 | + teamDict = { |
| 9 | + "ATL": ["Atlanta Hawks","01", "atlanta-hawks-", "/r/atlantahawks", "1610612737", "Hawks"], |
| 10 | + "NJN": ["Brooklyn Nets", "02", "boston-celtics-", "/r/bostonceltics", "1610612738", "Nets"], |
| 11 | + "BOS": ["Boston Celtics", "17", "brooklyn-nets-","/r/gonets", "1610612751", "Celtics"], |
| 12 | + "CHA": ["Charlotte Hornets", "30", "charlotte-hornets-","/r/charlottehornets", "1610612766", "Hornets"], |
| 13 | + "CHI": ["Chicago Bulls", "04", "chicago-bulls-","/r/chicagobulls", "1610612741", "Bulls"], |
| 14 | + "CLE": ["Cleveland Cavaliers", "05", "cleveland-cavaliers-","/r/clevelandcavs", "1610612739", "Cavaliers"], |
| 15 | + "DAL": ["Dallas Mavericks", "06", "dallas-mavericks-","/r/mavericks", "1610612742", "Mavericks"], |
| 16 | + "DEN": ["Denver Nuggets", "07", "denver-nuggets-","/r/denvernuggets", "1610612743", "Nuggets"], |
| 17 | + "DET": ["Detroit Pistons", "08", "detroit-pistons-", "/r/detroitpistons", "1610612765", "Pistons"], |
| 18 | + "GSW": ["Golden State Warriors", "09", "golden-state-warriors-", "/r/warriors", "1610612744", "Warriors"], |
| 19 | + "HOU": ["Houston Rockets", "10", "houston-rockets-", "/r/rockets", "1610612745", "Rockets"], |
| 20 | + "IND": ["Indiana Pacers", "11", "indiana-pacers-", "/r/pacers", "1610612754", "Pacers"], |
| 21 | + "LAC": ["Los Angeles Clippers", "12", "los-angeles-clippers-", "/r/laclippers", "1610612746", "Clippers"], |
| 22 | + "LAL": ["Los Angeles Lakers", "13", "los-angeles-lakers-", "/r/lakers", "1610612747", "Lakers"], |
| 23 | + "MEM": ["Memphis Grizzlies", "29", "memphis-grizzlies-", "/r/memphisgrizzlies", "1610612763", "Grizzlies"], |
| 24 | + "MIA": ["Miami Heat", "14", "miami-heat-", "/r/heat", "1610612748", "Heat"], |
| 25 | + "MIL": ["Milwaukee Bucks", "15", "milwaukee-bucks-", "/r/mkebucks", "1610612749", "Bucks"], |
| 26 | + "MIN": ["Minnesota Timberwolves", "16", "minnesota-timberwolves-", "/r/timberwolves", "1610612750", "Timberwolves"], |
| 27 | + "NOH": ["New Orleans Pelicans", "03", "new-orleans-pelicans-", "/r/nolapelicans", "1610612740", "Pelicans"], |
| 28 | + "NYK": ["New York Knicks", "18", "new-york-knicks-", "/r/nyknicks", "1610612752", "Knicks"], |
| 29 | + "OKC": ["Oklahoma City Thunder", "25", "oklahoma-city-thunder-", "/r/thunder", "1610612760", "Thunder"], |
| 30 | + "ORL": ["Orlando Magic", "19", "orlando-magic-", "/r/orlandomagic", "1610612753", "Magic"], |
| 31 | + "PHI": ["Philadelphia 76ers", "20", "philadelphia-76ers-", "/r/sixers", "1610612755", "76ers"], |
| 32 | + "PHX": ["Phoenix Suns", "21", "phoenix-suns-", "/r/suns", "1610612756", "Suns"], |
| 33 | + "POR": ["Portland Trail Blazers", "22", "portland-trail-blazers-", "/r/ripcity", "1610612757", "Trail Blazers"], |
| 34 | + "SAC": ["Sacramento Kings", "23", "sacramento-kings-", "/r/kings", "1610612758", "Kings"], |
| 35 | + "SAS": ["San Antonio Spurs", "24", "san-antonio-spurs-", "/r/nbaspurs", "1610612759", "Spurs"], |
| 36 | + "TOR": ["Toronto Raptors", "28", "toronto-raptors-", "/r/torontoraptors", "1610612761", "Raptors"], |
| 37 | + "UTA": ["Utah Jazz", "26", "utah-jazz-", "/r/utahjazz", "1610612762", "Jazz"], |
| 38 | + "WAS": ["Washington Wizards", "27", "washington-wizards-", "/r/washingtonwizards", "1610612764, ", "Wizards"] |
| 39 | + } |
| 40 | + |
| 41 | + teamShort = [] |
| 42 | + baseUrl = "https://www.basketball-reference.com" |
| 43 | + allData = {} |
| 44 | + |
| 45 | + def requestSoup(url): |
| 46 | + res = requests.get(url) |
| 47 | + return bs4.BeautifulSoup(res.text, 'html.parser') |
| 48 | + |
| 49 | + for each in teamDict.keys(): |
| 50 | + teamShort.append(each) |
| 51 | + |
| 52 | + driver = webdriver.Chrome() |
| 53 | + |
| 54 | + driver.get("https://www.basketball-reference.com/leagues/NBA_2019.html") |
| 55 | + thisYearStatsPage = bs4.BeautifulSoup(driver.page_source, "html.parser") |
| 56 | + tableContainer = thisYearStatsPage.find("table", {"id":"team-stats-per_game"}) |
| 57 | + personalFoulTbodyContainer = tableContainer.find("tbody") |
| 58 | + dataRow = personalFoulTbodyContainer.findAll("tr") |
| 59 | + for eachRow in dataRow: |
| 60 | + allData[str(eachRow.find("a").text)] = [eachRow.find("td", {"data-stat":"pf"}).text] |
| 61 | + |
| 62 | + tableContainer = thisYearStatsPage.find("table", {"id":"opponent-stats-per_game"}) |
| 63 | + opponentFoulTbodyContainer = tableContainer.find("tbody") |
| 64 | + dataRow = opponentFoulTbodyContainer.findAll("tr") |
| 65 | + for eachRow in dataRow: |
| 66 | + allData[str(eachRow.find("a").text)].append(eachRow.find("td", {"data-stat":"opp_pf"}).text) |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | + print(allData) |
| 71 | + driver.quit() |
0 commit comments