docs: def parse(self):
          """
          Returns a cleaned lxml ElementTree
  
          :returns: Whether the cleaned HTML has matches or not
          :rtype: bool
          """
          # Create the element tree
          self.tree = self._build_tree(self.html_contents)
  
          # Get explicits elements to keep and discard
          self.elts_to_keep = self._get_elements_to_keep()
          self.elts_to_discard = self._get_elements_to_discard()
  
          # Init an empty list of Elements to remove
          self.elts_to_remove = []
  
          # Check if the root is a match or if there is any matches
          is_root = self._is_keep(self.tree)
          has_descendant = self._has_keep_elt_in_descendants(self.tree)
  
          if not(is_root or has_descendant):
              return False
  
          # Parse and clean the ElementTree
          self._parse_element(self.tree, parent_is_keep=is_root)
          self._remove_elements(self.elts_to_remove)
  
          return True