• This repository has been archived on 21/Jul/2022
  • Stars
    star
    1,038
  • Rank 44,388 (Top 0.9 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 10 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[不再维护] 后继者 zhihu-oauth https://github.com/7sDream/zhihu-oauth 已被 DMCA,亦不再开发,仅提供代码存档:

zhihu-py3 : 知乎非官方API库 with Python3

Author Build DocumentationStatus PypiVersion License PypiDownloadStatus

通知

由于知乎前端老是改阿改的,每次我都要更新弄的我好烦的说……

所以我开发了一个新的项目Zhihu-OAuth

这个新项目用了一些黑科技手段,反正应该是更加稳定和快速了!而且还支持 Python 2 哟! 稳定我倒是没测,但是这里有一个 速度对比

如果你是准备新开一个项目的话,我强烈建议你看看我的新项目~

如果你已经用 Zhihu-py3 写了一些代码的话,我最近会写一个从 Zhihu-py3 转到 Zhihu-OAuth 的简易指南,你也可以关注一下哟。

毕竟嘛,有更好的方案的话,为什么不试试呢?

功能

由于知乎没有公开API,加上受到zhihu-python项目的启发,在Python3下重新写了一个知乎的数据解析模块。

提供的功能一句话概括为,用户提供知乎的网址构用于建对应类的对象,可以获取到某些需要的数据。

简单例子:

from zhihu import ZhihuClient

Cookies_File = 'cookies.json'

client = ZhihuClient(Cookies_File)

url = 'http://www.zhihu.com/question/24825703'
question = client.question(url)

print(question.title)
print(question.answer_num)
print(question.follower_num)
print(question.topics)

for answer in question.answers:
    print(answer.author.name, answer.upvote_num)

这段代码的输出为:

关系亲密的人之间要说「谢谢」吗?
627
4322
['心理学', '恋爱', '社会', '礼仪', '亲密关系']
龙晓航 50
小不点儿 198
芝士就是力量 89
欧阳忆希 425
...

另外还有Author(用户)Answer(答案)Collection(收藏夹)Column(专栏)Post(文章)Topic(话题)等类可以使用,Answer,Post类提供了save方法能将答案或文章保存为HTML或Markdown格式,具体请看文档,或者zhihu-test.py

安装

本项目依赖于requestsBeautifulSoup4html2text

已将项目发布到pypi,请使用下列命令安装

(sudo) pip(3) install (--upgrade) zhihu-py3

希望开启lxml的话请使用:

(sudo) pip(3) install (--upgrade) zhihu-py3[lxml]

因为lxml解析html效率高而且容错率强,在知乎使用<br>时,自带的html.parser会将其转换成<br>...</br>,而lxml则转换为<br/>,更为标准且美观,所以推荐使用第二个命令。

不安装lxml也能使用本模块,此时会自动使用html.parser作为解析器。

PS 若在安装lxml时出错,请安装libxml和libxslt后重试:

sudo apt-get install libxml2 libxml2-dev libxslt1.1 libxslt1-dev

准备工作

第一次使用推荐运行以下代码生成 cookies 文件:

from zhihu import ZhihuClient

ZhihuClient().create_cookies('cookies.json')

运行结果

====== zhihu login =====
email: <your-email>
password: <your-password>
please check captcha.gif for captcha
captcha: <captcha-code>
====== logging.... =====
login successfully
cookies file created.

运行成功后会在目录下生成cookies.json文件。

以下示例皆以登录成功为前提。

建议在正式使用之前运行zhihu-test.py测试一下。

用法实例

为了精简 Readme,本部分移动至文档内。

请看文档的「用法示例」部分。

登录方法综述

为了精简 Readme,本部分移动至文档内。

请看文档的「登录方法综述」部分。

文档

终于搞定了文档这个磨人的小妖精,可惜 Sphinx 还是不会用 T^T 先随意弄成这样吧:

Master版文档

Dev版文档

其他

有问题请开Issue,几个小时后无回应可加最后面的QQ群询问。

友链:

  • zhihurss:一个基于 zhihu-py3 做的跨平台知乎 rss(any user) 的客户端。

TODO List

  • [x] 增加获取用户关注者,用户追随者
  • [x] 增加获取答案点赞用户功能
  • [x] 获取用户头像地址
  • [x] 打包为标准Python模块
  • [x] 重构代码,增加ZhihuClient类,使类可以自定义cookies文件
  • [x] 收藏夹关注者,问题关注者等等
  • [x] ZhihuClient增加各种用户操作(比如给某答案点赞)
  • [ ] Unittest (因为知乎可能会变,所以这个有点难
  • [x] 增加获取用户关注专栏数和关注专栏的功能
  • [x] 增加获取用户关注话题数和关注话题的功能
  • [x] 评论类也要慢慢提上议程了吧

联系我

Github:@7sDream

知乎:@7sDream

新浪微博:@Dilover

邮箱:给我发邮件

编程交流群:478786205

More Repositories

1

pyqart

QArt Python Implementation.
Python
504
star
2

rikka

A simple image share system in go.
Go
208
star
3

fontfor

Find fonts which can show a specified character and preview them in terminal or browser.
Rust
162
star
4

torrent_parser

A .torrent file parser and creator for both Python 2 and 3
Python
149
star
5

django-intro-zh

Django 官方文档的 intro 部分的中文翻译
137
star
6

scp-pdf

SCP 基金会中文 Wiki 文档集,下载:https://github.com/7sDream/scp-pdf/releases
TeX
83
star
7

remda

Learn Ray Tracing in One Weekend series using Rust.
Rust
62
star
8

jellyap

Create a WiFi AP with transparent proxy quickly
Shell
49
star
9

qqqfome

Thank-you-follow-me Ha Ha Ha!
Python
42
star
10

tui-markup

markup langauge for terminal styled text
Rust
41
star
11

danmacu

自用 Bilibili 弹幕姬 for macOS
Python
41
star
12

certbot-dns-challenge-cloudflare-hooks

Simple scripts I use to auto renew my Let's encrypt wildcard SSL cert.
Shell
39
star
13

fonts-and-layout-zhCN

《Fonts and Layout for Global Scripts》中文版。一本关于字体设计、Unicode和计算机中复杂文本处理的免费书籍。
Typst
36
star
14

kd100

由于快递 100 接口的问题,目前脚本不可用,是否能修复取决于快递 100 官网是否恢复。详情请看 Issue #3。
Python
28
star
15

amiya

experimental middleware-based minimalism async HTTP server framework
Rust
22
star
16

0v0.link-blog

Blog, powered by django, sqlite, apache.
Python
15
star
17

moon-render

An experiment - render characters using moon emoji in shell 🌕️
C
14
star
18

firelomo

快速发送网页内容到 flomo 的火狐扩展
TypeScript
14
star
19

pixel-bird-jump

🐦 A small flappy-bird-like game demo by Godot engine
GDScript
13
star
20

which_fonts_support

This project will not update anymore, use https://github.com/7sDream/fontfor instead.
Python
12
star
21

nonebot-plugin-bam

Bilibili activity monitor plugin for nonebot.
Python
7
star
22

antarctica

Anatarctica maps based on leaflet.js, proj4leaflet and images from GIBS of NASA.
JavaScript
7
star
23

geko

GEneric Keep Order types for JSON (un)marshal.
Go
6
star
24

connex

A plumber game
Rust
5
star
25

gbc

基于OpenGL和GLUT的C++类库(OpenGL and GLUT Based Classes),写来学图形学的
C++
5
star
26

piano-emulator

A simple gui piano emulator, with Matlab.
HTML
4
star
27

coin

toss coin in the fish. 🌕🌖🌗🌘🌑🌒🌓🌔🌕
Shell
4
star
28

pyqt-piano-emulator

a piano emulator in windows by pyqt
Python
4
star
29

useful-files

some useful setting or other files
Shell
3
star
30

arbitrary

Rust
3
star
31

burz

Kaiheila bot framework for Rust
Rust
3
star
32

bgpview-cli

CLI tools for bgpview.io
Rust
2
star
33

typst-easy-pinyin

Write Chinese pinyin easily.
1
star
34

slog

Go
1
star
35

dotnes

[WIP] Yet another NES file parser
Rust
1
star
36

tui-markup-ansi-macro

A macro to generate styled ansi escape sequence from markup language
Rust
1
star
37

goodomain

A tiny toy to find good domain from your favorite word.
Svelte
1
star
38

nonebot-plugin-7s-roll

A roll dice plugin for nonebot
Python
1
star
39

qqbot-linger

My QQ Bot for personal use
Python
1
star