看知乎API

2016-09-24  本文已影响1045人  白如白牙

Via:http://www.kanzhihu.com/api-document

API文档

这里是很简陋的看知乎官方API文档0.1.5版。

当前版本不需要身份认证即可调用,但请大家注意节制,不要滥用。

本文档适合以下人群阅读:

对「看知乎」的网站感兴趣,准备开发APP或客户端的开发者;

对知乎用户数据和排行感兴趣的数据分析者;

不知道干什么就是想随便看看的闲人。

基本用法

API域名:http://api.kanzhihu.com

调用格式:目前只支持GET,URL格式为 http://api.kanzhihu.com/API名称,或者 http://api.kanzhihu.com/API名称/参数

返回数据:json

正确:{error : “”, data: … }

错误:{error : “…”}

服务器返回值之后首先检查error字段,如果不为空说明出错,为空再处理返回数据。

API列表

getposts

用途:获取「看知乎」首页文章列表,每次取10篇。

参数:时间戳(可选,留空时取最新10篇,有值时则取此时间戳之前的10篇)

返回值:

count(number),本次获取文章数量(一般为10,也可能小于10)

posts(array),文章信息列表,字段如下:

date(string),发表日期(yyyy-mm-dd)

name(string),文章名称(yesterday, recent, archive)

pic(string),抬头图url

publishtime(number),发表时间戳

count(number),文章包含答案数量

excerpt(string),摘要文字

如此时间戳之前无文章,则error==”no result”

描述:「看知乎」的答案推荐以文章为单位,每天在三个时段发布三篇,名字分别为昨日最新(yesterday)、近日热门(recent)和历史精华(archive),每篇推荐32~40个答案不等。本API就用于获取文章列表。如果要取更早的10篇(即向前翻页),则把当前最早一篇的时间戳作为参数即可。

示例:

http://api.kanzhihu.com/getposts

http://api.kanzhihu.com/getposts/1411261200

checknew

用途:检查「看知乎」首页在指定时间之后有没有更新

参数:时间戳(必选)

返回值:

result(bool),是否有更新

描述:每次调用getposts获取最新文章之后,客户端应保存本次最新一篇发表的时间戳,之后通过调用此API查询是否已经发布了新文章,如果返回结果为true则再次调用getposts。

建议在每天稍晚于5:00、11:00、17:00的时间分别进行查询,或者为了考虑日后的兼容性,每小时查询一次。

示例:

http://api.kanzhihu.com/checknew/1444899600

getpostanswers

用途:获取单篇文章的答案列表

参数:日期(必选,8位数字,如20140925)、名称(必选:yesterday、recent、archive)

返回值:

count(number),答案数量

answers(array),答案列表,字段如下:

title(string),文章id

time(datetime),发表时间

summary(string),答案摘要

questionid(string),问题id,8位数字

answerid(string),答案id,8~9位数字

authorname(string),答主名称

authorhash(string),答主hash

avatar(string),答主头像url

vote(number),赞同票数

如id不存在或没有答案,则error==”no result”

描述:通过文章列表获得某篇具体文章的日期及名称,然后通过本API获取文章中的答案列表。答案并未排序或者按照问题合并,开发者可以自行处理。

根据返回数据可以拼接以下url:

问题url:https://www.zhihu.com/question/questionid

答案url:https://www.zhihu.com/question/questionid/answer/answerid

用户主页url:https://www.zhihu.com/people/authorhash

示例:

http://api.kanzhihu.com/getpostanswers/20150925/archive

userdetail2

用途:获取用户详细页信息

参数:用户hash(必选)

返回值:

name(string):用户名

avatar(string):用户头像url

signature(string):用户签名

description(string):用户个人描述

detail(object):用户详细数据

ask(number):提问数

answer(number):回答数

post(number):专栏文章数

agree(number):赞同数

agreei(number):1日赞同数增加

agreeiratio(string):1日赞同数增幅

agreeiw(number):7日赞同数增加

agreeiratiow(string):7日赞同数增幅

ratio(number):平均赞同(总赞同数/(回答+专栏))

followee(number):关注数

follower(number):被关注数(粉丝)

followeri(number):1日被关注数增加

followiratio(string):1日被关注数增幅

followeriw(number):7日被关注数增加

followiratiow(string):7日被关注数增幅

thanks(number):感谢数

tratio(number):感谢/赞同比

fav(number):收藏数

fratio(number):收藏/赞同比

logs(number):公共编辑数

mostvote(number):最高赞同

mostvotepercent(string):最高赞同占比

mostvote5(number):前5赞同

mostvote5percent(string):前5赞同占比

mostvote10(number):前10赞同

mostvote10percent(string):前10赞同占比

count10000(number):赞同≥10000答案数

count5000(number):赞同≥5000答案数

count2000(number):赞同≥2000答案数

count1000(number):赞同≥1000答案数

count500(number):赞同≥500答案数

count200(number):赞同≥200答案数

count100(number):赞同≥100答案数

star(object):七星阵排名

answerrank:回答数+专栏文章数排名

agreerank:赞同数排名

ratiorank:平均赞同排名

followerrank:被关注数排名

favrank:收藏数排名

count1000rank:赞同超1000的回答数排名

count100rank:赞同超100的回答数排名

trend(array),近日动态,字段如下:

date(string),日期,格式为2014-09-25

answer(number):回答数+专栏文章数

agree(number):赞同数

follower(number):被关注数

topanswers(array),高票答案,字段如下:

title(string),标题

link(string):链接地址(不含域名)

agree(number):赞同数

date(string):日期,格式为2014-09-25

ispost(bool):是否专栏文章,用于判断链接域名是zhihu.com还是zhuanlan.zhihu.com

如用户hash不存在,则error==”no result”

如用户存在,但当日没有他的数据(可能是数据抓取出错),则error==”no snapshot”

描述:通过答案列表或其他途径获得知乎用户hash,然后通过本API获取用户详细信息用于展示及分析。

其中detail包含了用户在最近一条快照中的各项数据;

star选择了detail中的七项代表性数据进行排名(由于看知乎的数据库并没有包含知乎全站,所以排名越靠后越不准确),之所以叫七星阵,是因为在最初版本的设计中这七项以雷达图形式显示,外观很像星星;

trend显示了用户最多最近30天内的动态,可以看出回答、赞同、粉丝的增长情况;

topanswers是最高票的10个答案(或专栏文章)。

示例:

http://api.kanzhihu.com/userdetail2/1f644a1b7da169d2b56e1a4c6da61fea

topuser

用途:获取某项指标排名前列的用户列表(分页)

参数:指标类型、页数(可选,最小为1)、每页条数(可选,最小为1,最大为50)

返回值:

count(number),用户数量

topuser(array),用户列表,字段如下:

id(string):用户ID

name(string):用户名称

hash(string):用户hash

avatar(string):用户头像url

signature(string):用户签名

value(number):某项指标的值,注意,这里的字段名不是“value”,而是调用API时传递的参数“指标类型”;

如传递agree,则这里的字段名就是agree。

如页数为空,则默认取第一页;

如每页条数为空,则默认每页30条;

如所选范围超出了前500名,则出错并返回空值;

如所选范围刚好落在500名前后,可能返回数量会小于每页条数;

所有指标类型列表与userdetail2的返回值里detail属性内容一致。

描述:本API实际是对用户分析所做的按列筛选和分页处理,适用于移动客户端。如果为了完整分析数据,仍然推荐直接使用用户分析或通过其中的json数据文件进行。

示例:

取赞同排名前30的用户http://api.kanzhihu.com/topuser/agree/1

取关注排名161~200的用户http://api.kanzhihu.com/topuser/follower/5/40

searchuser

用途:搜索用户

参数:搜索关键字

返回值:

count(number),用户数量

users(array),用户列表,字段如下:

id(string):用户ID

name(string):用户名称

hash(string):用户hash

avatar(string):用户头像url

signature(string):用户签名

answer(number):回答+专栏数量

agree(number):赞同数量

follower(number):被关注数量

如搜索不到结果,则error=”no user”

搜索结果按如下顺序排列:

首先是用户ID等于关键字的;

然后是用户名等于关键字的,按被关注数排序;

再后面是用户名包含关键字的,按被关注数排序。

示例:

http://api.kanzhihu.com/searchuser/aton

http://api.kanzhihu.com/searchuser/苏莉安

http://api.kanzhihu.com/searchuser/苏

上一篇下一篇

猜你喜欢

热点阅读