code: def _get_answer(self, part):
          
          answer_fname = getattr(self, "answer_{}_fname".format(part))
          if os.path.isfile(answer_fname):
              with open(answer_fname) as f:
                  return f.read().strip()
          # scrape puzzle page for any previously solved answers
          response = requests.get(self.url, cookies=self._cookies, headers=self._headers)
          response.raise_for_status()
          soup = bs4.BeautifulSoup(response.text, "html.parser")
          if not self._title:
              # may as well save this while we're here
              self._save_title(soup=soup)
          hit = "Your puzzle answer was"
          paras = [p for p in soup.find_all("p") if p.text.startswith(hit)]
          if paras:
              parta_correct_answer = paras[0].code.text
              self._save_correct_answer(value=parta_correct_answer, part="a")
              if len(paras) > 1:
                  _p1, p2 = paras
                  partb_correct_answer = p2.code.text
                  self._save_correct_answer(value=partb_correct_answer, part="b")
          if os.path.isfile(answer_fname):
              with open(answer_fname) as f:
                  return f.read().strip()
          msg = "Answer {}-{}{} is not available".format(self.year, self.day, part)
          raise PuzzleUnsolvedError(msg)
docs: Note: Answers are only revealed after a correct submission. If you've
          have not already solved the puzzle, AocdError will be raised.