def top_answers(self):
        """获取话题下的精华答案.

        :return: 话题下的精华答案，返回生成器.
        :rtype: Answer.Iterable
        """
        from .question import Question
        from .answer import Answer
        from .author import Author, ANONYMOUS

        top_answers_url = Topic_Top_Answers_Url.format(self.id)
        params = {'page': 1}
        while True:
            # 超出50页直接返回
            if params['page'] > 50:
                return
            res = self._session.get(top_answers_url, params=params)
            params['page'] += 1
            soup = BeautifulSoup(res.content)
            # 不够50页，来到错误页面 返回
            if soup.find('div', class_='error') is not None:
                return
            questions = soup.find_all('a', class_='question_link')
            answers = soup.find_all('a', class_='answer-date-link')
            authors = soup.find_all('div', class_='zm-item-answer-author-info')
            upvotes = soup.find_all('a', class_='zm-item-vote-count')
            for ans, up, q, au in zip(answers, upvotes, questions, authors):
                answer_url = Zhihu_URL + ans['href']
                question_url = Zhihu_URL + q['href']
                question_title = q.text.strip()
                upvote = up.text
                if upvote.isdigit():
                    upvote = int(upvote)
                else:
                    upvote = None
                question = Question(question_url, question_title,
                                    session=self._session)
                if au.a is None:
                    author = ANONYMOUS
                else:
                    author_url = Zhihu_URL + au.a['href']
                    author_name = au.a.text
                    author_motto = au.strong['title'] if au.strong else ''
                    author = Author(author_url, author_name, author_motto,
                                    session=self._session)
                yield Answer(answer_url, question, author, upvote,
                             session=self._session)