zhlite
Project description
zhlite
说明
zhlite 是一个知乎的 Python 轻量客户端,全部功能全部采用知乎官方非公布 api 实现。因为很多接口需要登陆才能访问,所以 zhlite
需要登录才可以稳定使用。
目前对于所有 zhlite
获取的信息,均只可以查看不可以修改。
功能
- 用户登录
- 登陆用户的基本信息
- 登陆用户的关注和被关注信息
- 登陆用户的提问
- 登陆用户的回答
- 登陆用户的文章
- 以登陆用户的身份访问问题
- 以登录用户的身份访问回答
- 批量下载回答中的图片
- 批量下载回答中的视频
- 获取回答的评论
- 增加代理支持
安装
pip3 install zhlite
使用
zhlite
有几个关键核心类:
- Auth (用户认证模块)
- User (用户模块)
- Question (问题模块)
- Answer (回答模块)
- Article (文章模块)
模块说明
Auth
属性 | 类型 | 描述 |
---|---|---|
login() | method | 用户登陆 |
islogin | bool | 是否登陆状态 |
profile | User Object | 登陆用户 |
platform | str | 当前运行的系统类型 |
User
属性 | 类型 | 描述 |
---|---|---|
id | str | 用户自定义ID |
uid | str | 用户ID |
name | str | 显示名字 |
gender | str | 性别 0:女 1:男 -1:未知 |
url | str | 用户url连接 |
employments | dict | 职业信息 |
educations | dict | 教育信息 |
locations | list | 地区信息 |
avatar | str | 用户头像 |
headline | str | 个人简介 |
is_vip | bool | 盐选会员 |
is_org | bool | 机构号 |
follower_count | int | 关注者数量 |
followers | generator | 关注者 |
following_count | int | 关注的人数量 |
followings | generator | 关注的人 |
answer_count | int | 回答数量 |
answers | generator | 回答 |
question_count | int | 提问数量 |
questions | generator | 提问 |
article_count | int | 文章数量 |
articles | generator | 文章 |
voteup_count | int | 获得赞同数量 |
visit_count | int | 来访者数量 |
Question
属性 | 类型 | 描述 |
---|---|---|
id | int | 问题ID |
title | str | 问题标题 |
detail | str | 问题描述 |
topics | list | 问题标签 |
type | str | 问题状态 |
created | datetime | 提问时间 |
updated | datetime | 最后一次修改时间 |
author | User Object | 提问人 |
answers | generator | 回答 |
Answer
属性 | 类型 | 描述 |
---|---|---|
id | int | 回答ID |
type | str | 回答状态 |
author | User Object | 回答者 |
excerpt | str | 摘要 |
content | str | 回答(包含HTML信息) |
text | str | 回答(不包含HTML信息) |
comment_count | int | 评论数 |
voteup_count | int | 赞同数 |
created | datetime | 回答时间 |
updated | datetime | 最后一次修改时间 |
question | Question Object | 对应的问题 |
images | generator | 该回答的图片 |
videos | generator | 该回答的视频 |
Article
属性 | 类型 | 描述 |
---|---|---|
id | int | 文章ID |
title | str | 文章标题 |
author | User Object | 发布者 |
topics | list | 话题 |
excerpt | str | 摘要 |
content | str | 回答(包含HTML信息) |
text | str | 回答(不包含HTML信息) |
comment_count | int | 评论数 |
voteup_count | int | 赞同数 |
created | datetime | 发布时间 |
updated | datetime | 最后一次修改时间 |
简要使用
使用代理(proxy)
>>> import zhlite
>>> proxies = {
>>> "http":"http://ip:port",
>>> "https":"https://ip:port"
>>> }
>>> zhlite.set_proxy(proxies)
用户认证(Auth)
第一次实例化 Auth
对象时需要通过手机号和密码登陆,之后会生成一个 cookies.txt
文件保存登录信息,以后无需再次重复登陆。如需重新登陆,可以通过 .login(relogin=True)
强制重新登陆,并刷新 cookies.txt
文件
注意:短时间内多次通过密码登陆会导致账户异常,账户异常会强制要求用户更改密码并短时间内锁定ip
>>> from zhlite import Auth
>>> auth = Auth()
>>> auth.login(relogin=True)
登陆用户
用户登陆之后可通过 .profile
获得一个登录用户的 User
对象
>>> from zhlite import Auth
>>> auth = Auth()
>>> auth.profile
<zhlite.zhlite.User object at 0x0000024C6C989630>
登录成功之后会在当前路径下保存一个 cookies.txt
作为下次登陆免输入的 cookies
文件,如果需要强制重新登陆或者更换登录用户,可以通过 .islogin(relogin=True)
(relogin
指定 True
即为强制登陆)
用户(User)
>>> from zhlite import Auth, User, Question, Answer
>>> auth = Auth()
>>> user = User('zhihuadmin') # 知乎小管家
>>> user
<zhlite.zhlite.User object at 0x00000293F66A81D0>
>>> user.id
'zhihuadmin'
>>> user.name
'知乎小管家'
>>> user.questions
<generator object User.questions at 0x00000293F67620C0>
>>> list(user.questions) # 谨慎用 list() 如果用户的提问数量很多会导致性能问题
[<zhlite.zhlite.Question object at 0x00000293F77164E0>, <zhlite.zhlite.Question object at 0x00000293F77FD1D0>, <zhlite.zhlite.Question object at 0x00000293F76AB048>, <zhlite.zhlite.Question object at 0x00000293F6691C18>, <zhlite.zhlite.Question object at 0x00000293F7582E80>, <zhlite.zhlite.Question object at 0x00000293F66A80B8>, <zhlite.zhlite.Question object at 0x00000293F758E390>, <zhlite.zhlite.Question object at 0x00000293F7716400>, <zhlite.zhlite.Question object at 0x00000293F6691BE0>, <zhlite.zhlite.Question object at 0x00000293F76ECA90>]
问题(Question)
>>> from zhlite import Auth
>>> auth = Auth()
>>> question = Question('19550225')
>>> question
<zhlite.zhlite.Question object at 0x00000293F76ECF28>
>>> question.title
'如何使用知乎?'
>>> question.author
<zhlite.zhlite.User object at 0x00000293F76EC8D0>
>>> question.created
'2010-12-20 03:27:20'
>>> question.answers
<generator object Question.answers at 0x00000293F67622A0>
回答(Answer)
>>> answer = Answer('95070154')
>>> answer
<zhlite.zhlite.Answer object at 0x00000293F77FD1D0>
>>> answer.excerpt
'本问题隶属于「知乎官方指南」:属于「知乎官方指南」的问答有哪些? -- 在知乎上回答问题有一个基本原则:尽可能提供详细的解 释和说明。 不要灌水——不要把「评论」当作「答案」来发布。 如果你对问题本身或别人的答案有自己的看法,你可以通过「评论」来进行,不要把评论当作答案来发布。那样的话,该回答会被其他用户点击「没有帮助」而折叠起来,反而起不到实际效果,也无助于提供高质量的答案。 --------关于回答--------- …'
>>> answer.comment_count
11
>>> answer.created
'2016-04-13 13:48:52'
>>> answer.question
<zhlite.zhlite.Question object at 0x00000293F76AB048>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
zhlite-1.8.3.tar.gz
(15.3 kB
view hashes)
Built Distribution
zhlite-1.8.3-py3-none-any.whl
(12.9 kB
view hashes)