diff --git a/zhihu/author.py b/zhihu/author.py
index <HASH>..<HASH> 100644
--- a/zhihu/author.py
+++ b/zhihu/author.py
@@ -259,7 +259,7 @@ class Author(BaseZhihu):
         else:
             res = self.soup.find(
                 'span', class_=t)
-            if res:
+            if res and 'title' in res:
                 return res['title']
             else:
                 return 'unknown'
diff --git a/zhihu/topic.py b/zhihu/topic.py
index <HASH>..<HASH> 100644
--- a/zhihu/topic.py
+++ b/zhihu/topic.py
@@ -75,7 +75,7 @@ class Topic(BaseZhihu):
         self._make_soup()
         parent_topic_tag = self.soup.find('div', class_='parent-topic')
         if parent_topic_tag is None:
-            return []
+            yield []
         else:
             for topic_tag in parent_topic_tag.find_all('a'):
                 yield Topic(Zhihu_URL + topic_tag['href'],
fix bug when try to get login user's location and which is not exist, remove mix use return and yield in topic.py lead to old python syntax error