<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_clubs(self, clubs_page):
 """Parses the DOM and returns character clubs attributes. :type clubs_page: :class:`bs4.BeautifulSoup` :param clubs_page: MAL character clubs page's DOM :rtype: dict :return: character clubs attributes. """

    character_info = self.parse_sidebar(clubs_page)
    second_col = clubs_page.find(u'div', {'id': 'content'}).find(u'table').find(u'tr').find_all(u'td', recursive=False)[1]

    try:
      clubs_header = second_col.find(u'div', text=u'Related Clubs')
      character_info[u'clubs'] = []
      if clubs_header:
        curr_elt = clubs_header.nextSibling
        while curr_elt is not None:
          if curr_elt.name == u'div':
            link = curr_elt.find(u'a')
            club_id = int(re.match(r'/clubs\.php\?cid=(?P<id>[0-9]+)', link.get(u'href')).group(u'id'))
            num_members = int(re.match(r'(?P<num>[0-9]+) members', curr_elt.find(u'small').text).group(u'num'))
            character_info[u'clubs'].append(self.session.club(club_id).set({'name': link.text, 'num_members': num_members}))
          curr_elt = curr_elt.nextSibling
    except:
      if not self.session.suppress_parse_exceptions:
        raise

    return character_info