def process_rows(rows): for tr in rows: td = tr('td', recursive=False) if len(tr('td')) == 1: # spacer row - switching players continue if td[0].get('colspan') == '2': # details for opponent opponent_number = util.get_integer(td[1].text) offense = get_faceoff_data(td[2].text) defense = get_faceoff_data(td[3].text) neutral = get_faceoff_data(td[4].text) print opponent_number, offense, defense, neutral else: # new player print td[0].text, td[2].text
def set_stars(self, soup): star_table = soup.table.table stars = [] for tr in star_table('tr'): (rank, team, position, player) = [td.text for td in tr('td')] # sometimes no stars given, which causes blank team if len(team) == 0: break s = Star() # rank can be inferred by order in list s.rank = int(rank[0]) s.team = team s.position = position s.player = util.get_integer(player) stars.append(s) self.stars = stars
def get_team_penalties_from_table(table): penalties = [] for tr in table('tr', recursive=False)[1:]: (number, period, time, player, minutes, penalty_type) = \ [util.clean_nbsp(td.text).strip() for td in tr('td', recursive=False)] p = Penalty() p.period = util.get_numeric_period(period) p.time = time try: p.player = util.get_integer(player) # Can have whole-team penalties with no player except ValueError: p.player = None p.minutes = int(minutes) p.penalty_type = penalty_type penalties.append(p) return penalties
def get_officials_from_table(table): return [util.get_integer(tr.text) for tr in table("tr")]