优雅地调用知乎(zhihu.com)上的数据

ZhihuVA的Python项目详细描述


ZhihuVAPI:优雅地玩知乎

简介

ZhihuVAPI是什么?

ZhihuVAPI 是一个可以让你以一种优雅的形式调用知乎数据的 Python 包.

怎么安装或者更新 ZhihuVAPI?

pip install -U ZhihuVAPI

使用

引用 ZhihuVAPI

import ZhihuVAPI as zhihu

后面的as zhihu是别称的意思,便于输入.

配置用户

配置脚本使用的 cookies,一共有两种方法.

  1. 什么都不管,脚本会默认读取 Chrome 或者 Cent 的 cookies.如果你是其他类 Chrome 的浏览器,你可以在config.pycookiepath自定义cookies文件的路径.
  2. config.py禁用is_use_chrome_cookies后,你可以在里面自定义headers.

读取自己

importZhihuVAPIaszhihuself=zhihu.selfprint(f'我的名字叫{self.name},目前获得了{self.voteup_count}个赞同,{self.favorited_count}个收藏,有{self.followers_count}个粉丝.提出了{self.question_count}个问题,撰写了{self.answer_count}个答案,{self.articles_count}篇文章,拥有{self.columns_count}个专栏.')

输出:

我的名字叫以茄之名,目前获得了14480个赞同,7654个收藏,有876个粉丝.提出了24个问题,撰写了49个答案,7篇文章,拥有2个专栏.

基本操作

ZhihuVAPI 支持以下三种初始化:

  1. URL 初始化:zhihu.People('https://www.zhihu.com/people/iCheez/activities')
  2. ID 初始化:zhihu.People('e4f87c3476a926c1e2ef51b4fcd18fa3')
  3. URL_Token 初始化(仅对用户对象有效):zhihu.People('iCheez')

对于点赞列表,粉丝列表等数据,ZhihuVAPI支持以下方式调用:

获取列表的所有项

importZhihuVAPIaszhihuself=zhihu.People('iCheez')forainself.answers():a:zhihu.Answer# 让 IDE 智能提示print(a.excerpt)

获取列表的指定数量的项

importZhihuVAPIaszhihuself=zhihu.People('iCheez')forainself.answers(5):a:zhihu.Answer# 让 IDE 智能提示print(a.excerpt)

获取列表的从某处开始的指定数量的项

importZhihuVAPIaszhihuself=zhihu.People('iCheez')forainself.answers(count=5,start=50):a:zhihu.Answer# 让 IDE 智能提示print(a.excerpt)

获取列表的从某页开始的指定数量的项

importZhihuVAPIaszhihuself=zhihu.People('iCheez')forainself.answers(count=5,page=2):a:zhihu.Answer# 让 IDE 智能提示print(a.excerpt)

获取答案

importZhihuVAPIaszhihua=zhihu.Answer('https://www.zhihu.com/question/31343133/answer/58763430')forpina.voters(count=5):p:zhihu.People# 让 IDE 智能提示print(p.name)ifp.is_waterman():print(f'{p.name} 是水军')print(f'这个在 "{a.question.title}" 下的回答得到了{a.voteup_count}个赞同,我{"已经赞同了"if a.is_voting else "还没有赞同" }')forcina.comments():c:zhihu.Commentprint(c.content)a.down()#反对a.undown()#取消反对(以此类推)a.vote()# 赞同a.thank()# 感谢# a.collect([zhihu.Collection('你自己的收藏夹 ID'),])

输出:

日志:获取以茄之名的点赞列表
午夜
斗战胜佛
Chern
万铆工
言知
这个答案在 "以下这篇文章关于「四大发明」的观点是否客观、准确?" 下的回答得到了201个赞同,我还没有赞同

获取用户

importZhihuVAPIaszhihuperson=zhihu.People('zhihuadmin')forpinperson.followers(count=5):# 粉丝p:zhihu.People# 让 IDE 智能提示print(p.name)forainperson.answers(count=5):# 答案a:zhihu.Answer# 让 IDE 智能提示print(a.voteup_count)forarinperson.articles(count=5):#文章ar:zhihu.Article# 让 IDE 智能提示print(ar.voteup_count)forminperson.msgs(count=5):#私信print(m)forpininperson.pins(count=5):#想法pin:zhihu.Pin# 让 IDE 智能提示print(pin.voteup_count)person.block()# 屏蔽person.unblock()# 取消屏蔽(以此类推)person.send('你好,我是{zhihu.self.name}')# 发送私信

获取专栏

importZhihuVAPIaszhihucolumn=zhihu.Column('cheezpython')print(column.title)forarincolumn.articles():ar:zhihu.Article# 让 IDE 智能提示print(f'{ar.title} 一共有 {ar.voteup_count} 个赞')forpincolumn.coauthors():p:zhihu.People# 让 IDE 智能提示print(f'{p.name} 他有 {p.voteup_count} 个赞')column.follow()#关注

获取文章

importZhihuVAPIaszhihuar=zhihu.Article('https://zhuanlan.zhihu.com/p/39747259')forpinar.voters(count=5):p:zhihu.People# 让 IDE 智能提示print(p.name)ifp.is_waterman():print(f'{p.name} 是水军')print(f'这篇文章 "{ar.title}" 得到了{ar.voteup_count}个赞同,我{"已经赞同了"if ar.is_voting else "还没有赞同" }')ar.down()#反对ar.undown()#取消反对(以此类推)ar.vote()# 赞同ar.thank()# 感谢# ar.collect([zhihu.Collection('你自己的收藏夹 ID'),])

获取收藏夹

importZhihuVAPIaszhihuco=zhihu.Collection('https://www.zhihu.com/collection/62217998')print(f'这个收藏夹的名字是{co.title}')forctinco.contents(count=10):ifct.type=='answer':print(f'{ct.content.excerpt}\n')

获取问题

importZhihuVAPIaszhihu

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何制作org。阿帕奇。cxf。拦截器。登录Interceptor以登录自定义日志文件   java ImageView运动事件如果有两个指针,停止操作   Java EE web应用程序能否托管在IIS上   java安卓列表视图和复选框问题   导入一个Gradle项目的多个Java包   安卓如何检查firestore中是否存在特定数据   java需要更新while循环中的变量   java我已经编写了这个成员类,如何创建一个方法来查找给定给成员的特定ID?   java是否更容易将代码保持为嵌套的if语句,或者尝试转换为一个或多个开关   java我的二维数组行未旋转   java最终对象引用是否保证了所有线程之间的可见性?   java使用base64在cucumber jvm中嵌入屏幕截图   是否可以使用java oops/Javascript替换小程序生命周期方法   java Akka持久性问题与恢复如何诊断?   java仅在一行字符串中更改文本的颜色   java如何强制vaadin使用WebSockets作为传输而不仅仅是推送   java如何从JideSoft树表中删除树行   java如何调用具有dataprovider的方法   FXML控制器中其他类的java调用方法