Welcome to zhihu-py3’s documentation!¶
Contents:
安装和测试¶
pip安装(推荐)¶
(sudo) pip(3) install (--upgrade) zhihu-py3
如果想同时安装lxml,获得更快的解析速度、容错率和美观程度,请开启lxml feature:
(sudo) pip(3) install (--upgrade) zhihu-py3[lxml]
源码安装¶
依赖于beautifulsoup4、requests、html2text,会自动安装。
git clone https://github.com/7sDream/zhihu-py3.git
cd zhihu-py3
python(3) setup.py install
用法示例¶
目录
获取某用户的基本信息¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from zhihu import ZhihuClient
Cookies_File = 'cookies.json'
client = ZhihuClient(Cookies_File)
url = 'http://www.zhihu.com/people/excited-vczh'
author = client.author(url)
print('用户名 %s' % author.name)
print('用户简介 %s' % author.motto)
print('用户关注人数 %d' % author.followee_num)
print('取用户粉丝数 %d' % author.follower_num)
print('用户得到赞同数 %d' % author.upvote_num)
print('用户得到感谢数 %d' % author.thank_num)
print('用户提问数 %d' % author.question_num)
print('用户答题数 %d' % author.answer_num)
print('用户专栏文章数 %d,名称分别为:' % author.post_num)
for column in author.columns:
print(column.name)
print('用户收藏夹数 %d,名称分别为:' % author.collection_num)
for collection in author.collections:
print(collection.name)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 用户名 vczh
用户简介 专业造轮子 https://github.com/vczh-libraries
用户关注人数 1339
取用户粉丝数 128100
用户得到赞同数 320326
用户得到感谢数 43045
用户提问数 238
用户答题数 8392
用户专栏文章数 25,名称分别为:
vczh的日常
深井冰 IT 评论
编程语言与高级语言虚拟机杂谈(仮)
蓝色小药丸
用户收藏夹数 1,名称分别为:
李老师牛逼的答案
|
备份某问题所有答案¶
1 2 3 | question = client.question('http://www.zhihu.com/question/28092572')
for answer in question.answers:
answer.save()
|
会在当前目录下新建以问题标题命名的文件夹,并将所有html文件保存到该文件夹。
answer.save(mode="md")
会保存为markdown格式。
备份某用户所有答案¶
1 2 3 | author = client.author('http://www.zhihu.com/people/7sdream')
for answer in author.answers:
answer.save(filepath=author.name)
|
备份某收藏夹所有答案,备份专栏文章同理,不再举例。
获取某用户点赞的动态¶
1 2 3 4 5 6 7 8 | author = zhihu.author('http://www.zhihu.com/people/excited-vczh')
for act in author.activities:
if act.type == zhihu.ActType.UPVOTE_ANSWER:
print('%s 在 %s 赞同了问题 %s 中 %s(motto: %s) 的回答, '
'此回答赞同数 %d' %
(author.name, act.time, act.answer.question.title,
act.answer.author.name, act.answer.author.motto,
act.answer.upvote_num))
|
vczh 在 2015-07-24 08:35:06 赞同了问题 女生夏天穿超短裙是一种什么样的体验? 中 Light(motto: 我城故事多。) 的回答, 此回答赞同数 43
vczh 在 2015-07-24 08:34:30 赞同了问题 女生夏天穿超短裙是一种什么样的体验? 中 Ms狐狸(motto: 随便写来玩玩) 的回答, 此回答赞同数 57
……
获取用户关注的人和关注此用户的人¶
1 2 3 4 5 6 7 8 9 | author = client.author('http://www.zhihu.com/people/7sdream')
print('--- Followers ---')
for follower in author.followers:
print(follower.name)
print('--- Followees ---')
for followee in author.followees:
print(followee.name)
|
--- Followers ---
yuwei
falling
周非
...
--- Followees ---
yuwei
falling
伍声
...
计算某答案点赞中三零用户比例¶
1 2 3 4 5 6 7 8 9 10 11 12 | url = 'http://www.zhihu.com/question/30404450/answer/47939822'
answer = client.answer(url)
three_zero_user_num = 0
for upvoter in answer.upvoters:
print(upvoter.name, upvoter.upvote_num, upvoter.thank_num,
upvoter.question_num, upvoter.answer_num)
if upvoter.is_zero_user():
three_zero_user_num += 1
print('\n三零用户比例 %.3f%%' % (three_zero_user_num / answer.upvote_num * 100))
|
...
宋飞 0 0 0 0
唐吃藕 10 0 0 5
三零用户比例 26.852%
爬取某用户关注的人的头像¶
import requests
import os
import imghdr
author = client.author('http://www.zhihu.com/people/excited-vczh')
os.mkdir('vczh')
for followee in author.followees:
try:
filename = followee.name + ' - ' + followee.id + '.jpeg'
print(filename)
with open('vczh/' + filename, 'wb') as f:
f.write(requests.get(followee.photo_url).content)
except KeyboardInterrupt:
break
for root, dirs, files in os.walk('vczh'):
for filename in files:
filename = os.path.join(root, filename)
img_type = imghdr.what(filename)
if img_type != 'jpeg' and img_type is not None:
print(filename, '--->', img_type)
os.rename(filename, filename[:-4] + img_type)
效果见 这里。
使用非阻塞的网络请求¶
内建的所有请求都是阻塞的, 如果你希望使用其他的网络请求方法, 你可以把请求到的数据传入相关类的 from_html 方法中. from_html 方法用于接受数据, 返回相应的类的实例.
这里以使用 aiohttp 为例, 使用的是 python3.5 之后引入的语法. 无需置疑, 你要自己处理 session
比如要获取一个答案.
import aiohttp
import asyncio
import zhihu
async def get_answer(url, cookies, headers):
async with aiohttp.get(url, cookies=cookies, headers=headers) as r:
data = await r.text()
# from_html 是 classmethod
answer = zhihu.Answer.from_html(data)
print(answer.content)
url = 'answer url'
cookies = dict(client._session.cookies)
headers = client._session.headers
loop = asyncio.get_event_loop()
loop.run_until_complete(get_answer(url, cookies, headers))
登录方法综述:¶
create_cookies¶
用于生成 cookies,用法见前面的介绍。
login_with_cookies¶
用cookies字符串或文件名登录,ZhihuClient
的构造函数就是使用这个方法。
get_captcha¶
获取验证码数据(bytes二进制数据),当用于其他项目时方便手动获取验证码图片数据进行处理,比如显示在控件内。
login¶
手动登陆方法,用于其他项目中方便手动无需 cookies 登陆,参数为:
- password
- captcha
返回值有三个
- code:成功为0,失败为1
- msg:错误消息,字符串格式,成功为空
- cookies:cookies数据,字符串格式,失败为空
login_in_terminal¶
跟着提示在终端里登录知乎,返回cookies字符串,create_cookies就是帮你做了将这个函数的返回值保存下来的工作而已。
综上¶
如果你只是写个小脚本测试玩玩,可以使用:
from zhihu import ZhihuClient
client = ZhihuClient()
client.login_in_terminal()
# do thing you want with client
如果你的脚本不是大项目,又要多次运行,可以先按照上文方法create_cookies,再使用:
from zhihu import ZhihuClient
Cookies_File = 'cookies.json'
client = ZhihuClient(Cookies_File)
如果项目比较大(以GUI项目为例),可以在判断出是首次使用(没有cookies文件)时,弹出登录对话框,使用get_captcha获取验证码数据,再调用login函数手动登录并在登录成功后保存cookies文件:
import os
from zhihu import ZhihuClient
Cookies_File = 'config/cookies.json'
client = ZhihuClient()
def on_window_show()
login_btn.disable()
if os.path.isfile(Cookies_File) is False:
captcha_imgbox.setData(client.get_captcha())
login_btn.enable()
else:
with open(Cookies_File) as f
client.login_with_cookies(f.read())
# turn to main window
def on_login_button_clicked():
login_btn.disable()
email = email_edit.get_text()
password = password_edit.get_text()
captcha = captcha_edit.get_text()
code, msg, cookies = client.login(email, password, captcha)
if code == 0:
with open(Cookies_File, 'w') as f
f.write(cookies)
# turn to main window
else:
msgbox(msg)
login_btn.enable()
注:以上和GUI有关的代码皆为我乱想出来的,仅作示例之用。
知乎相关类文档¶
ZhihuClient 知乎客户端类¶
-
class
zhihu.client.
ZhihuClient
(cookies=None)[源代码]¶ 知乎客户端类,内部维护了自己专用的网络会话,可用cookies或账号密码登录.
-
__getattr__
(item: str)[源代码]¶ 本函数用于获取各种类,如 Answer Question 等.
支持的形式有: - client.answer()
- client.author()
- client.collection()
- client.column()
- client.post()
- client.question()
- client.topic()
参数均为对应页面的url,返回对应的类的实例。
-
__init__
(cookies=None)[源代码]¶ 创建客户端类实例.
参数: cookies (str) – 见 login_with_cookies()
中cookies
参数返回: 知乎客户端对象 返回类型: ZhihuClient
在终端中执行登录流程,将 cookies 存放在文件中以便后续使用
参数: - file (str) – 文件名
- need_captcha (bool) – 登录过程中是否使用验证码, 默认为 False
- use_getpass (bool) – 是否使用安全模式输入密码,默认为 True, 如果在某些 Windows IDE 中无法正常输入密码,请把此参数设置为 False 试试
返回:
-
login
(email, password, captcha=None)[源代码]¶ 登陆知乎.
参数: - email (str) – 邮箱
- password (str) – 密码
- captcha (str) – 验证码, 默认为None,表示不提交验证码
返回: 元素序号 元素类型 意义 说明 0 int 是否成功 0为成功,1为失败 1 str 失败原因 登录成功则为空字符串 2 str cookies字符串 登录失败则为空字符串 返回类型: (int, str, str)
-
login_in_terminal
(need_captcha=False, use_getpass=True)[源代码]¶ 不使用cookies,在终端中根据提示登陆知乎
参数: - need_captcha (bool) – 是否要求输入验证码,如果登录失败请设为 True
- use_getpass (bool) – 是否使用安全模式输入密码,默认为 True, 如果在某些 Windows IDE 中无法正常输入密码,请把此参数设置为 False 试试
返回: 如果成功返回cookies字符串
返回类型: str
使用cookies文件或字符串登录知乎
参数: cookies (str) – 参数形式 作用 文件名 将文件内容作为cookies字符串 cookies 字符串 直接提供cookies字符串 返回: 无 返回类型: None
-
set_proxy
(proxy)[源代码]¶ 设置代理
参数: proxy (str) – 使用 “http://example.com:port” 的形式 返回: 无 返回类型: None 说明: 由于一个 ZhihuClient
对象和它创建出来的其他知乎对象共用 一个Session,所以调用这个方法也会将所有生成出的知乎类设置上代理。
-
Activity and ActType 用户动态类¶
-
class
zhihu.activity.
Activity
(act, session, author)[源代码]¶ 用户动态类,请使用Author.activities获取.
-
__init__
(act, session, author)[源代码]¶ 创建用户动态类实例.
参数: - act (bs4.element.Tag) – 表示用户动态的页面元素
- session (Session) – 使用的网络会话
- author (Author) – Activity 所属的用户对象
返回: 用户动态对象
返回类型: 说明: 根据Activity.type不同可以获取不同属性,具体请看
ActType
-
content
¶ 获取此对象中能提供的那个属性,对应表请查看
ActType
类.返回: 对象提供的对象 返回类型: Author or Question or Answer or Topic or Column or Post
-
time
¶ 返回: 返回用户执行 Activity 操作的时间 返回类型: datetime.datetime
-
-
class
zhihu.acttype.
ActType
[源代码]¶ 用于表示用户动态的类型.
常量说明: 常量名 说明 提供属性 属性类型 ANSWER_QUESTION 回答了一个问题 answer Answer
UPVOTE_ANSWER 赞同了一个回答 answer Answer
ASK_QUESTION 提出了一个问题 question Question
FOLLOW_QUESTION 关注了一个问题 question Question
UPVOTE_POST 赞同了一篇文章 post Post
FOLLOW_COLUMN 关注了一个专栏 column Column
FOLLOW_TOPIC 关注了一个话题 topic Topic
PUBLISH_POST 发表了一篇文章 post Post
FOLLOW_COLLECTION 关注了一个收藏夹 collection Collection
Answer 答案类¶
-
class
zhihu.answer.
Answer
(url, question=None, author=None, upvote_num=None, content=None, session=None)[源代码]¶ 答案类,请使用``ZhihuClient.answer``方法构造对象.
-
__init__
(url, question=None, author=None, upvote_num=None, content=None, session=None)[源代码]¶ 创建答案类实例.
参数: 返回: 答案对象
返回类型:
-
aid
¶ 获取答案的内部id,某些POST操作需要此参数
返回: 答案内部id 返回类型: str
获取答案作者.
返回: 答案作者 返回类型: Author
-
collect_num
¶ 获取答案收藏数
返回: 答案收藏数量 返回类型: int
-
collections
¶ 获取包含该答案的收藏夹
返回: 包含该答案的收藏夹 返回类型: Collection.Iterable collect_num 未必等于 len(collections),比如: https://www.zhihu.com/question/20064699/answer/13855720 显示被收藏 38 次,但只有 30 个收藏夹
-
comment_num
¶ 返回: 答案下评论的数量 返回类型: int
-
comments
¶ 获取答案下的所有评论.
返回: 答案下的所有评论,返回生成器 返回类型: Comments.Iterable
-
content
¶ 以处理过的Html代码形式返回答案内容.
返回: 答案内容 返回类型: str
-
creation_time
¶ 获取答案创建时间
返回: 答案创建时间 返回类型: datetime.datetime
-
deleted
¶ 答案是否被删除, 被删除了返回 True, 为被删除返回 False :return: True or False
-
html
¶ 获取网页源码
返回: 网页源码 返回类型: str
-
id
¶ 答案的id
返回: 答案id 返回类型: int
-
latest_comments
¶ 获取答案下的所有评论。较新的评论先返回。 使用该方法比
reversed(list(answer.comments))
效率高 因为现在靠后的热门评论会被挪到前面,所以返回的评论未必严格满足时间先后关系返回: 答案下的所有评论,返回生成器 返回类型: Comments.Iterable
-
save
(filepath=None, filename=None, mode='html')[源代码]¶ 保存答案为Html文档或markdown文档.
参数: - filepath (str) – 要保存的文件所在的目录, 不填为当前目录下以问题标题命名的目录, 设为”.”则为当前目录。
- filename (str) – 要保存的文件名, 不填则默认为 所在问题标题 - 答主名.html/md。 如果文件已存在,自动在后面加上数字区分。 自定义文件名时请不要输入后缀 .html 或 .md。
- mode (str) – 保存类型,可选 html 、 markdown 、 md 。
返回: 无
返回类型: None
-
upvote_num
¶ 获取答案赞同数量.
返回: 答案赞同数量 返回类型: int
-
upvoters
¶ 获取答案点赞用户,返回生成器.
返回: 点赞用户 返回类型: Author.Iterable
-
xsrf
¶ 获取知乎的反xsrf参数(用不到就忽视吧~)
返回: xsrf参数 返回类型: str
-
Author 用户类¶
用户类,请使用``ZhihuClient.answer``方法构造对象.
创建用户类实例.
参数: - url (str) – 用户主页url,形如 http://www.zhihu.com/people/7sdream
- name (str) – 用户名字,可选
- motto (str) – 用户简介,可选
- follower_num (int) – 用户粉丝数,可选
- question_num (int) – 用户提问数,可选
- answer_num (int) – 用户答案数,可选
- upvote_num (int) – 用户获得赞同数,可选
- thank_num (int) – 用户获得感谢数,可选
- photo_url (str) – 用户头像地址,可选
- session (Session) – 使用的网络会话,为空则使用新会话。
返回: 用户对象
返回类型:
获取用户的最近动态.
返回: 最近动态,返回生成器,具体说明见 Activity
返回类型: Activity.Iterable
获取答案数量.
返回: 答案数量 返回类型: int
获取用户的所有答案.
返回: 用户所有答案,返回生成器. 返回类型: Answer.Iterable
用户的行业.
返回: 用户的行业,如没有则返回 ‘unknown’ 返回类型: str
获取收藏夹数量.
返回: 收藏夹数量 返回类型: int
获取用户收藏夹.
返回: 用户收藏夹,返回生成器 返回类型: Collection.Iterable
获取用户专栏.
返回: 用户专栏,返回生成器 返回类型: Column.Iterable
用户的教育状况.
返回: 用户的教育状况,如没有则返回 ‘unknown’ 返回类型: str
获取用户关注的专栏数
返回: 关注的专栏数 返回类型: int
获取用户关注的专栏.
返回: 用户关注的专栏,返回生成器 返回类型: Column.Iterable
获取用户关注的话题数
返回: 关注的话题数 返回类型: int
获取用户关注的话题.
返回: 用户关注的话题,返回生成器 返回类型: Topic.Iterable
获取关注了多少人.
返回: 关注的人数 返回类型: int
获取用户关注的人.
返回: 用户关注的人的,返回生成器 返回类型: Author.Iterable
获取用户关注的人,跳过前 skip 个用户。
返回: 用户关注的人的,返回生成器 返回类型: Author.Iterable
获取追随者数量,就是关注此人的人数.
返回: 追随者数量 返回类型: int
获取关注此用户的人.
返回: 关注此用户的人,返回生成器 返回类型: Author.Iterable
获取关注此用户的人,跳过前 skip 个用户。
返回: 关注此用户的人,返回生成器 返回类型: Author.Iterable
用户的性别.
返回: 用户的性别(male/female/unknown) 返回类型: str
获取作者的内部hash id(用不到就忽视吧~)
返回: 用户hash id 返回类型: str
获取用户id,就是网址最后那一部分.
返回: 用户id 返回类型: str
返回当前用户是否为三零用户,其实是四零: 赞同0,感谢0,提问0,回答0.
返回: 是否是三零用户 返回类型: bool
获取用户最后一次活动的时间
返回: 用户最后一次活动的时间,返回值为 unix 时间戳 返回类型: int
用户的所在地.
返回: 用户的所在地,如没有则返回 ‘unknown’ 返回类型: str
获取用户自我介绍,由于历史原因,我还是把这个属性叫做motto吧.
返回: 用户自我介绍 返回类型: str
获取用户名字.
返回: 用户名字 返回类型: str
获取用户头像图片地址.
返回: 用户头像url 返回类型: str
获取专栏文章数量.
返回: 专栏文章数量 返回类型: int
获取提问数量.
返回: 提问数量 返回类型: int
获取用户的所有问题.
返回: 用户的所有问题,返回生成器. 返回类型: Question.Iterable
获取收到的感谢数量.
返回: 收到的感谢数量 返回类型: int
获取收到的的赞同数量.
返回: 收到的的赞同数量 返回类型: int
获取用户微博链接.
返回: 微博链接地址,如没有则返回 ‘unknown’ 返回类型: str
获取知乎的反xsrf参数(用不到就忽视吧~)
返回: xsrf参数 返回类型: str
匿名用户常量,通过
zhihu.ANONYMOUS
访问。提问者、回答者、点赞者、问题关注者、评论者都可能是
ANONYMOUS
Collection 收藏夹类¶
-
class
zhihu.collection.
Collection
(url, owner=None, name=None, follower_num=None, session=None)[源代码]¶ 收藏夹,请使用``ZhihuClient.collection``方法构造对象.
-
__init__
(url, owner=None, name=None, follower_num=None, session=None)[源代码]¶ 创建收藏夹类实例.
参数: - url (str) – 收藏夹主页url,必须
- owner (Author) – 收藏夹拥有者,可选
- name (str) – 收藏夹标题,可选
- follower_num (int) – 收藏夹关注人数,可选
- session (Session) – 使用的网络会话,为空则使用新会话。
返回: 收藏夹对象
返回类型:
-
answers
¶ 获取收藏夹内所有答案对象.
返回: 收藏夹内所有答案,返回生成器 返回类型: Answer.Iterable
-
cid
¶ 获取收藏夹内部Id(用不到忽视就好)
返回: 内部Id 返回类型: int
-
follower_num
¶ 获取关注此收藏夹的人数.
返回: 关注此收藏夹的人数 返回类型: int
-
followers
¶ 获取关注此收藏夹的用户
返回: 关注此收藏夹的用户 返回类型: Author.Iterable
-
id
¶ 获取收藏夹id(网址最后的部分).
返回: 收藏夹id 返回类型: int
-
logs
¶ 获取收藏夹日志
返回: 收藏夹日志中的操作,返回生成器 返回类型: CollectActivity.Iterable
-
name
¶ 获取收藏夹名字.
返回: 收藏夹名字 返回类型: str
-
questions
¶ 获取收藏夹内所有问题对象.
返回: 收藏夹内所有问题,返回生成器 返回类型: Question.Iterable
-
xsrf
¶ 获取知乎的反xsrf参数(用不到就忽视吧~)
返回: xsrf参数 返回类型: str
-
-
class
zhihu.collection.
CollectActivity
(type, time, owner, collection, answer=None)[源代码]¶ 收藏夹操作, 请使用``Collection.logs``构造对象.
-
__init__
(type, time, owner, collection, answer=None)[源代码]¶ 创建收藏夹操作类实例
参数: - type (acttype.CollectActType) – 操作类型
- time (datetime.datetime) – 进行操作的时间
- owner (Author) – 收藏夹的拥有者
- collection (Collection) – 所属收藏夹
- answer (Answer) – 收藏的答案,可选
返回: CollectActivity
-
answer
¶ 返回: 添加或删除收藏的答案, 若是创建收藏夹操作返回 None 返回类型: Answer or None
-
collection
¶ 返回: 所属收藏夹 返回类型: Collection
-
time
¶ 返回: 进行操作的时间 返回类型: datetime.datetime
-
type
¶ 返回: 收藏夹操作类型, 具体参见 CollectActType
返回类型: CollectActType
-
Columu 专栏类¶
-
class
zhihu.column.
Column
(url, name=None, follower_num=None, post_num=None, session=None)[源代码]¶ 专栏类,请使用``ZhihuClient.column``方法构造对象.
-
__init__
(url, name=None, follower_num=None, post_num=None, session=None)[源代码]¶ 创建专栏类实例.
参数: - url (str) – 专栏url
- name (str) – 专栏名,可选
- follower_num (int) – 关注者数量,可选
- post_num (int) – 文章数量,可选
- session (Session) – 使用的网络会话,为空则使用新会话。
返回: 专栏对象
返回类型:
-
follower_num
¶ 获取关注人数.
返回: 关注人数 返回类型: int
-
name
¶ 获取专栏名称.
返回: 专栏名称 返回类型: str
-
post_num
¶ 获取专栏文章数.
返回: 专栏文章数 返回类型: int
-
posts
¶ 获取专栏的所有文章.
返回: 专栏所有文章,返回生成器 返回类型: Post.Iterable
-
Comment 评论类¶
Me 用户操作类¶
敬告:本类提供的点赞,反对功能,请在使用前三思,并且绝对不要用于批量点赞,批量反对等不甚道德的脚本。和谐知乎,你我共建,谢谢理解。
-
class
zhihu.me.
Me
(url, name, motto, photo_url, session)[源代码]¶ 封装了相关操作(如点赞,关注问题)的类。 请使用
ZhihuClient.me()
方法获取实例。-
add_comment
(answer, content)[源代码]¶ 给指定答案添加评论
参数: - answer (Answer) – 答案对象
- content (string) – 评论内容
返回: 成功返回 True,失败返回 False
返回类型: bool
-
block
(something, block=True)[源代码]¶ 屏蔽某个用户、话题
参数: - something (Author/Topic) –
- block – True–>屏蔽,False–>取消屏蔽
返回: 成功返回 True,失败返回 False
返回类型: bool
-
follow
(something, follow=True)[源代码]¶ 关注用户、问题、话题或收藏夹
参数: - something (Author/Question/Topic) – 需要关注的对象
- follow (bool) – True–>关注,False–>取消关注
返回: 成功返回True,失败返回False
返回类型: bool
-
send_message
(author, content)[源代码]¶ 发送私信给一个用户
参数: - author (Author) – 接收私信用户对象
- content (string) – 发送给用户的私信内容
返回: 成功返回 True,失败返回 False
返回类型: bool
-
thanks
(answer, thanks=True)[源代码]¶ 感谢或取消感谢回答
参数: - answer (Answer) – 要感谢或取消感谢的回答
- thanks – True–>感谢,False–>取消感谢
返回: 成功返回True,失败返回False
返回类型: bool
-
Post 专栏文章类¶
-
class
zhihu.post.
Post
(url, column=None, author=None, title=None, upvote_num=None, comment_num=None, session=None)[源代码]¶ 专栏文章类,请使用``ZhihuClient.post``方法构造对象.
-
__init__
(url, column=None, author=None, title=None, upvote_num=None, comment_num=None, session=None)[源代码]¶ 创建专栏文章类实例.
参数: 返回: 专栏文章对象
返回类型:
获取文章作者.
返回: 文章作者 返回类型: Author
-
column_in_name
¶ 获取文章所在专栏的内部名称(用不到就忽视吧~)
返回: 专栏的内部名称 返回类型: str
-
comment_num
¶ 获取评论数量.
返回: 评论数量 返回类型: int
-
save
(filepath=None, filename=None, mode='md')[源代码]¶ 保存答案为 Html 文档或 markdown 文档.
参数: - filepath (str) – 要保存的文件所在的目录, 不填为当前目录下以专栏标题命名的目录, 设为”.”则为当前目录。
- filename (str) – 要保存的文件名, 不填则默认为 所在文章标题 - 作者名.html/md。 如果文件已存在,自动在后面加上数字区分。 自定义文件名时请不要输入后缀 .html 或 .md。
- mode (str) – 保存类型,可选 html 、 markdown 、 md 。
返回: 无
返回类型: None
-
slug
¶ 获取文章的编号(用不到就忽视吧~)
返回: 文章编号 返回类型: int
-
title
¶ 获取文章标题.
返回: 文章标题 返回类型: str
-
upvote_num
¶ 获取文章赞同数量.
返回: 文章赞同数 返回类型: int
-
upvoters
¶ 获取文章的点赞用户
返回: 文章的点赞用户,返回生成器。
-
Question 问题类¶
-
class
zhihu.question.
Question
(url, title=None, followers_num=None, answer_num=None, creation_time=None, author=None, session=None)[源代码]¶ 问题类,请使用``ZhihuClient.question``方法构造对象.
-
__init__
(url, title=None, followers_num=None, answer_num=None, creation_time=None, author=None, session=None)[源代码]¶ 创建问题类实例.
参数: - url (str) –
问题url. 现在支持两种 url
区别在于,使用第一种,调用
question.answers
的时候会按投票排序返回答案; 使用第二种, 会按时间排序返回答案, 后提交的答案先返回 - title (str) – 问题标题,可选,
- followers_num (int) – 问题关注人数,可选
- answer_num (int) – 问题答案数,可选
- creation_time (datetime.datetime) – 问题创建时间,可选
- author (Author) – 提问者,可选
返回: 问题对象
返回类型: - url (str) –
-
answer_num
¶ 获取问题答案数量.
返回: 问题答案数量 返回类型: int
-
answers
¶ 获取问题的所有答案.
返回: 问题的所有答案,返回生成器 返回类型: Answer.Iterable
获取问题的提问者.
返回: 提问者 返回类型: Author or zhihu.ANONYMOUS
-
creation_time
¶ 返回: 问题创建时间 返回类型: datetime.datetime
-
deleted
¶ 问题是否被删除, 被删除了返回 True, 未被删除返回 False :return: True or False
-
details
¶ 获取问题详细描述,目前实现方法只是直接获取文本,效果不满意……等更新.
返回: 问题详细描述 返回类型: str
-
follower_num
¶ 获取问题关注人数.
返回: 问题关注人数 返回类型: int
-
followers
¶ 获取关注此问题的用户
返回: 关注此问题的用户 返回类型: Author.Iterable 问题: 要注意若执行过程中另外有人关注,可能造成重复获取到某些用户
-
html
¶ 获取页面源码.
返回: 页面源码 返回类型: str
-
id
¶ 获取问题id(网址最后的部分).
返回: 问题id 返回类型: int
-
last_edit_time
¶ 返回: 问题最后编辑时间 返回类型: datetime.datetime
-
qid
¶ 获取问题内部id(用不到就忽视吧)
返回: 问题内部id 返回类型: int
-
refresh
()[源代码]¶ 刷新 Question object 的属性. 例如回答数增加了, 先调用
refresh()
再访问 answer_num 属性, 可获得更新后的答案数量.返回: None
-
title
¶ 获取问题标题.
返回: 问题标题 返回类型: str
-
topics
¶ 获取问题所属话题.
返回: 问题所属话题 返回类型: Topic.Iterable
-
xsrf
¶ 获取知乎的反xsrf参数(用不到就忽视吧~)
返回: xsrf参数 返回类型: str
-
Topic 话题类¶
-
class
zhihu.topic.
Topic
(url, name=None, session=None)[源代码]¶ 答案类,请使用``ZhihuClient.topic``方法构造对象.
-
answers
¶ 获取话题下所有答案(按时间降序排列)
返回: 话题下所有答案,返回生成器 返回类型: Answer.Iterable
-
children
¶ 获取此话题的子话题
返回: 此话题的子话题, 返回生成器 返回类型: Topic.Iterable
-
description
¶ 获取话题描述信息.
返回: 话题描述信息 返回类型: str
-
follower_num
¶ 获取话题关注人数.
返回: 关注人数 返回类型: int
-
followers
¶ 获取话题关注者
返回: 话题关注者,返回生成器 返回类型: Author.Iterable
-
hot_answers
¶ 获取话题下热门的回答
返回: 话题下的热门动态中的回答,按热门度顺序返回生成器 返回类型: Question.Iterable
-
hot_questions
¶ 获取话题下热门的问题
返回: 话题下的热门动态中的问题,按热门度顺序返回生成器 返回类型: Question.Iterable
-
id
¶ 获取话题Id(网址最后那串数字)
返回: 话题Id 返回类型: int
-
name
¶ 获取话题名称.
返回: 话题名称 返回类型: str
-
parents
¶ 获取此话题的父话题。 注意:由于没找到有很多父话题的话题来测试, 所以本方法可能再某些时候出现问题,请不吝反馈。
返回: 此话题的父话题,返回生成器 返回类型: Topic.Iterable
-
photo_url
¶ 获取话题头像图片地址.
返回: 话题头像url 返回类型: str
-
questions
¶ 获取话题下的所有问题(按时间降序排列)
返回: 话题下所有问题,返回生成器 返回类型: Question.Iterable
-
tid
¶ 话题内部Id,有时候要用到
返回: 话题内部Id 返回类型: int
-
top_answers
¶ 获取话题下的精华答案.
返回: 话题下的精华答案,返回生成器. 返回类型: Answer.Iterable
获取最佳回答者
返回: 此话题下最佳回答者,一般来说是5个,要不就没有,返回生成器 返回类型: Author.Iterable
-
unanswered_questions
¶ 获取话题下的等待回答的问题
什么是「等待回答」的问题:https://www.zhihu.com/question/40470324
返回: 话题下等待回答的问题,返回生成器 返回类型: Question.Iterable
-
xsrf
¶ 获取知乎的反xsrf参数(用不到就忽视吧~)
返回: xsrf参数 返回类型: str
-