<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_reviews(self, reviews_page):
 """Parses the DOM and returns user reviews attributes. :type reviews_page: :class:`bs4.BeautifulSoup` :param reviews_page: MAL user reviews page's DOM :rtype: dict :return: User reviews attributes. """

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

    try:
      user_info[u'reviews'] = {}
      reviews = second_col.find_all(u'div', {u'class': u'borderDark'}, recursive=False)
      if reviews:
        for row in reviews:
          review_info = {}
          try:
            (meta_elt, review_elt) = row.find_all(u'div', recursive=False)[0:2]
          except ValueError:
            raise
          meta_rows = meta_elt.find_all(u'div', recursive=False)
          review_info[u'date'] = utilities.parse_profile_date(meta_rows[0].find(u'div').text)
          media_link = meta_rows[0].find(u'a')
          link_parts = media_link.get(u'href').split(u'/')
          # of the form /(anime|manga)/9760/Hoshi_wo_Ou_Kodomo
          media = getattr(self.session, link_parts[1])(int(link_parts[2])).set({u'title': media_link.text})

          helpfuls = meta_rows[1].find(u'span', recursive=False)
          helpful_match = re.match(r'(?P<people_helped>[0-9]+) of (?P<people_total>[0-9]+)', helpfuls.text).groupdict()
          review_info[u'people_helped'] = int(helpful_match[u'people_helped'])
          review_info[u'people_total'] = int(helpful_match[u'people_total'])

          consumption_match = re.match(r'(?P<media_consumed>[0-9]+) of (?P<media_total>[0-9?]+)', meta_rows[2].text).groupdict()
          review_info[u'media_consumed'] = int(consumption_match[u'media_consumed'])
          if consumption_match[u'media_total'] == u'?':
            review_info[u'media_total'] = None
          else:
            review_info[u'media_total'] = int(consumption_match[u'media_total'])

          review_info[u'rating'] = int(meta_rows[3].find(u'div').text.replace(u'Overall Rating: ', ''))

          for x in review_elt.find_all([u'div', 'a']):
            x.extract()
          review_info[u'text'] = review_elt.text.strip()
          user_info[u'reviews'][media] = review_info
    except:
      if not self.session.suppress_parse_exceptions:
        raise

    return user_info