知乎数据 API 接口 (node.js)
知乎已经更新为 https, 本项目 < 1.0.0 不能再使用了. 请升级
根据这些接口获取到知乎的数据,包括以下接口:
- User API (用户信息)
- Post API (专栏文章)
- Answer API (答案)
- Question API (问题)
- Topic API (话题)
欢迎贡献代码,一起完善知乎的接口
Getting Started
let zhihu = ; let username = 'shanejs'; zhihuUser; /* You'll get{ answer: 14, post: 0, follower: 529, profileUrl: 'https://www.zhihu.com/people/shanejs', name: '狂飙蜗牛', sex: 'male'}*/
Usage
User API
User.info(username)
根据用户名获取到用户的简要信息,username
为用户的唯一标识,参见个人主页的 url,或者设置中的个性域名(只能修改一次)。
比如请求这个用户 shanelau (zhihu.com/people/shanelau):
let zhihu = ;let name = 'shanelau'; zhihuUser;
请求成功将会返回:
/* * answer (number) 答题数量 * post (number) 文章数量 * follower (number) 跟随者数量 * profileUrl (string) 个人主页 * name (string) 名字 * sex (string) 性别 */ answer: 5 post: 0 follower: 456 profileUrl: 'https://www.zhihu.com/people/shanelau1021' name: '狂飙蜗牛' sex: 'male'
User.questions
用户的提问列表 @TODO
User.answers
用户的回答列表 @TODO
User.zhuanlansFocus
用户关注的专栏 @TODO
User.topic
用户关注的话题信息 @TODO
Post API
Post.info(postUrl)
获取专栏文章的详细信息
postUrl
文章的url地址
Example
zhihuPost;
Result
- Object
Post.page(name[, config])
获取专栏文章列表
name
专栏的英文名字, 例如:'bigertech'config
可选,{object} ,默认值如下
limit: 10 // 记录数 offset: 0 // 偏移量
Example
Post.likersDetail(postUrl[, config])
获取专栏文章的点赞者的详细信息
postUrl
专栏文章的url地址config
可选,配置对象,默认{limit:10, offset:10}
Result
用户数组。结构与User.info接口返回的一致。
{Array}
//User
Post.zhuanlanInfo(name)
获取专栏的信息
name
专栏的名字,比如bigertech
Result
followersCount: 22614 description: '' creator: bio: '魅族营销中心招募设计师' hash: '29c3654588fd4246bb90cbd345242d65' description: '' profileUrl: 'http://www.zhihu.com/people/linan' avatar: id: '24f3a654b' template: 'http://pic2.zhimg.com/{id}\_{size}.jpg' slug: 'linan' name: '李楠' topics: href: '/api/columns/bigertech' acceptSubmission: true slug: 'bigertech' name: '笔戈科技' url: '/bigertech' avatar: id: 'a4bf61d95' template: 'http://pic3.zhimg.com/{id}\_{size}.jpg' commentPermission: 'anyone' following: false postsCount: 173 canPost: false activateAuthorRequested: false
Post.comments(postUrl[, config])
获取专栏文章的评论信息
postUrl
专栏文章的url地址config
可选,配置对象,默认{limit:10, offset:10}
zhihu.Post.comments(`https://zhuanlan.zhihu.com/p/24241616?refer=chenyuz`).then(function(comments){
console.log(comments);
});
Result
评论数组
[
{ liked: false,
inReplyToCommentId: 0,
featured: false,
href: '/api/posts/24241616/comments/199226760',
reviewing: false,
disliked: false,
dislikesCount: 0,
id: 199226760,
author:
{ profileUrl: 'https://www.zhihu.com/people/xu-xing-62-43',
bio: '',
hash: '6954117908c91a1c2897e466fc0545af',
uid: 647461616195604500,
isOrg: false,
description: '',
isOrgWhiteList: false,
slug: 'xu-xing-62-43',
avatar: [Object],
name: 'SP fan' },
content: 'ins即视感',
createdTime: '2016-12-07T21:56:25+08:00',
collapsed: false,
likesCount: 1
},
...
...
]
Answer API
Answer.voters(answerId)
用 answerId
获取这个回答的点赞者。注意 answerId
与 url_token
的区别,answerId
可以在 DOM Tree 中找到,具体的对应关系仍在探索中。知乎的一篇回答的 URL 结构一般是:
zhihu.com/question/12345/answer/67890
^^^^^ ^^^^^
question token answer token
zhihu.com/answer/12306/voters_profile
^^^^^
answer id
@TODO 实现知乎支持的更多参数,比如 offset 等
Question API
Question.answers(token[, offset])
Question.answers(options)
获取该问题的回答列表
let Question = Question; Question;Question; // start from 10Question;
Collection API
问题的收藏列表
url : http://www.zhihu.com/collection/25547043?page=1
Collection.getAllPageData
获取所有的页面数据,遍历所有的页面
Collection;
Collection.getDataByPage
获取某一页的页面数据
let url = 'http://www.zhihu.com/collection/25547043?page=1';Collection;
Collection.getPagination
获取改收藏列表的分页信息
{
pages: 总页数,
current: 当前页面
}
Topic API
Topic.getTopicByID(topicID[, page])
根据话题id获取该话题下的问题,话题id为唯一标识,参见话题的url
topicID
话题的ID
Example
请求这个话题:生活、艺术、文化与活动
topicID
为 19778317
let topicID = '19778317';zhihuTopic;
Result
参数说明
/* You'll get * name: (string) 话题名称 * page: (number) 当前页数 * totalPage: (number) 该话题下问题总页数 * questions: (object) 当页问题 * - title: (string) 问题名字 * - url: (string) 问题链接 * - postTime:(string) 问题最近更新时间 */ name: '生活、艺术、文化与活动' page: 1 totalPage: 47242 questions: '0': title: '为什么很多人能接受有过长期恋爱经历,却不能接受有过婚姻的人?' url: 'http://www.zhihu.com/question/27816723' postTime: '41 秒前' '19': title: '360卫士在C盘为什么不可以删掉?' url: 'http://www.zhihu.com/question/27816632' postTime: '5 分钟前'
贡献者
- shanelau
- Ivan Jiang (iplus26)
- sunchenguang
更新记录
2016.5.23
- 修复 https 问题
- 修改部分bug
- 加入 jscs 格式化代码风格
2015.10.15
- 新增收藏列表的数据抓取
- 查询某个收藏下的所有数据和分页数据