From 680e87d38488ebccb53679c272f7d73ac7627904 Mon Sep 17 00:00:00 2001 From: your name Date: Fri, 26 Jul 2024 21:01:09 +0530 Subject: [PATCH] duplication of code get_game_stats --- modules/scraper.py | 58 ++++++++++--------------------------------- tests/module_tests.py | 2 +- visualize.py | 2 +- 3 files changed, 15 insertions(+), 47 deletions(-) diff --git a/modules/scraper.py b/modules/scraper.py index 48bfeb6..e7a8c8b 100644 --- a/modules/scraper.py +++ b/modules/scraper.py @@ -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"}) @@ -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 @@ -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 - +""" \ No newline at end of file diff --git a/tests/module_tests.py b/tests/module_tests.py index 99c126e..7be811d 100644 --- a/tests/module_tests.py +++ b/tests/module_tests.py @@ -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: diff --git a/visualize.py b/visualize.py index c649103..249a67c 100644 --- a/visualize.py +++ b/visualize.py @@ -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"]