code: def _readable(self):
          
          if not self.candidates:
              logger.info("No candidates found in document.")
              return self._handle_no_candidates()
  
          # right now we return the highest scoring candidate content
          best_candidates = sorted(
              (c for c in self.candidates.values()),
              key=attrgetter("content_score"), reverse=True)
  
          printer = PrettyPrinter(indent=2)
          logger.debug(printer.pformat(best_candidates))
  
          # since we have several candidates, check the winner's siblings
          # for extra content
          winner = best_candidates[0]
          updated_winner = check_siblings(winner, self.candidates)
          updated_winner.node = prep_article(updated_winner.node)
          if updated_winner.node is not None:
              dom = build_base_document(
                  updated_winner.node, self._return_fragment)
          else:
              logger.info(
                  'Had candidates but failed to find a cleaned winning DOM.')
              dom = self._handle_no_candidates()
  
          return self._remove_orphans(dom.get_element_by_id("readabilityBody"))
docs: The readable parsed article