Skip to content

duplication of code get_game_stats #168

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 13 additions & 45 deletions modules/scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ def get_player_stats(year):
away_map : dict
A dictionary of players with list of stats as value
"""
def get_game_stats(link):
def get_game_stats(link,adv_stats=False):
resp = requests.get(link)
page_content = BeautifulSoup(resp.content, "html.parser")
table = page_content.findAll("table",attrs={"class":"sortable stats_table"})
Expand All @@ -342,8 +342,17 @@ def get_game_stats(link):
away_map = {}
home_table = table[0]
away_table = table[8]
home_team = home_table.find("caption").string.split(" (")[0]
away_team = away_table.find("caption").string.split(" (")[0]
if adv_stats:
home_table = table[7]
away_table = table[15]
home_team = table[0].find("caption").string.split(" (")[0]
away_team = table[8].find("caption").string.split(" (")[0]
else:
home_table = table[0]
away_table = table[8]
home_team = home_table.find("caption").string.split(" (")[0]
away_team = away_table.find("caption").string.split(" (")[0]

home_map["name"] = home_team
away_map["name"] = away_team

Expand Down Expand Up @@ -391,45 +400,4 @@ def get_game_stats(link):
A dictionary of players with list of advanced stats as value
away_map : dict
A dictionary of players with list of advanced stats as value
"""
def get_game_adv_stats(link):
resp = requests.get(link)
page_content = BeautifulSoup(resp.content, "html.parser")
table = page_content.findAll("table",attrs={"class":"sortable stats_table"})

home_map = {}
away_map = {}
home_table = table[7]
away_table = table[15]
home_team = table[0].find("caption").string.split(" (")[0]
away_team = table[8].find("caption").string.split(" (")[0]
home_map["name"] = home_team
away_map["name"] = away_team

labels_tr = home_table.find("tr",attrs={"class":"thead"})
labels_th = labels_tr.findAll("th")
labels = []
for i, th in enumerate(labels_th):
if i > 0:
labels.append(th["aria-label"])

home_tr_list = home_table.findAll("tr")
away_tr_list = away_table.findAll("tr")
for i in range(len(home_tr_list)):
home_tr = home_tr_list[i]
away_tr = away_tr_list[i]
if home_tr.find("th").find("a"):
home_player = home_tr.find("th").find("a").string
away_player = away_tr.find("th").find("a").string
home_td = home_tr.findAll("td")
away_td = away_tr.findAll("td")
home_stat_list = []
away_stat_list = []
for j in range(min(len(away_td), len(home_td))):
home_stat_list.append((labels[j], home_td[j].string))
away_stat_list.append((labels[j], away_td[j].string))
home_map[home_player] = home_stat_list
away_map[away_player] = away_stat_list

return home_map, away_map

"""
2 changes: 1 addition & 1 deletion tests/module_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def test_get_adv_stats(self):
# Method to test advanced stat scraper from game link
def test_get_game_adv_stats(self):
adv_stats = ['Minutes Played', 'True Shooting Percentage', 'Effective Field Goal Percentage', '3-Point Attempt Rate', 'Free Throw Attempt Rate']
home, away = scraper.get_game_adv_stats("https://www.basketball-reference.com/boxscores/202009300LAL.html")
home, away = scraper.get_game_stats("https://www.basketball-reference.com/boxscores/202009300LAL.html",adv_stats=True)
ad_stats = away['Anthony Davis']
scraper_stats = set()
for stat in ad_stats:
Expand Down
2 changes: 1 addition & 1 deletion visualize.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def main():
jb_line = []
lbj_line = []
for game in games:
home_map, away_map = get_game_stats(game)
home_map, away_map = get_game_stats(game,adv_stats=False)
if "Jimmy Butler" in home_map:
jb = home_map["Jimmy Butler"]
lbj = away_map["LeBron James"]
Expand Down