Skip to content

Commit 685275f

Browse files
committed
readme
1 parent ab40892 commit 685275f

File tree

5 files changed

+438
-36
lines changed

5 files changed

+438
-36
lines changed

README.rst

Lines changed: 267 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,267 @@
1-
zhihu-python:获取知乎信息
2-
============================
3-
4-
介绍
5-
----
6-
7-
zhihu-python 采用 python2.7 编写,用来方便地获取知乎上各种内容的信息,并且可以方便地将答案备份导出为 txt 或 markdown 文件。
8-
由于知乎官方没有提供 api,所以有了此项目地存在。
9-
10-
依赖
11-
-----
12-
13-
- 使用 `Beautiful Soup 4 <http://www.crummy.com/software/BeautifulSoup/>`_ 解析 html 文档
14-
- 使用 `requests <https://github.com/kennethreitz/requests>`_ 处理 http 请求
15-
- 使用 `html2text <https://github.com/aaronsw/html2text>`_ 进行格式转换
16-
17-
没有的话可以使用 pip 安装:
18-
19-
.. code-block:: bash
20-
21-
$ pip install requests
22-
$ pip install beautifulsoup4
23-
$ pip install html2text
24-
25-
**注意** :如果同时安装了 python3 和 python2 , pip 命令可能默认安装的是 python3 版本的包,故需将上述命令中的 pip 换成
26-
pip2 (比如在我的Ubuntu上)。
27-
28-
快速开始
29-
---------
30-
31-
zhihu-python主要文件为zhihu.py
32-
1+
zhihu-python:获取知乎信息
2+
============================
3+
4+
介绍
5+
----
6+
7+
zhihu-python 采用 python2.7 编写,用来方便地获取知乎上各种内容的信息,并且可以方便地将答案备份导出为 txt 或 markdown 文件。
8+
由于知乎官方没有提供 api,所以有了此项目地存在。
9+
10+
依赖
11+
-----
12+
13+
- 使用 `Beautiful Soup 4 <http://www.crummy.com/software/BeautifulSoup/>`_ 解析 html 文档
14+
- 使用 `requests <https://github.com/kennethreitz/requests>`_ 处理 http 请求
15+
- 使用 `html2text <https://github.com/aaronsw/html2text>`_ 进行格式转换
16+
17+
没有的话可以使用 pip 安装:
18+
19+
.. code-block:: bash
20+
21+
$ pip install requests
22+
$ pip install beautifulsoup4
23+
$ pip install html2text
24+
25+
**注意** :如果同时安装了 python3 和 python2 , pip 命令可能默认安装的是 python3 版本的包,故需将上述命令中的 pip 换成pip2 (比如在我的Ubuntu上)。
26+
27+
快速开始
28+
---------
29+
30+
zhihu-python 主要文件为 zhihu.py ,配置文件为 config.ini , 将这两个文件下载到你的工作目录,并修改
31+
config.ini 文件中的 email 为你的知乎账户邮箱,修改 password 为你的知乎账户密码。
32+
33+
34+
Question:获取问题信息
35+
~~~~~~~~~~~~~~~~~~~~~~~~
36+
37+
Question 代表一个问题,处理知乎问题相关操作。创建一个 Question 对象需传入该问题的 url ,如:
38+
39+
.. code-block:: python
40+
41+
from zhihu import Question
42+
43+
url = "http://www.zhihu.com/question/24269892"
44+
question = Question(url)
45+
46+
得到 Question 对象后,可以获取该问题的一些信息:
47+
48+
.. code-block:: python
49+
50+
# -*- coding: utf-8 -*-
51+
from zhihu import Question
52+
53+
url = "http://www.zhihu.com/question/24269892"
54+
question = Question(url)
55+
56+
# 获取该问题的标题
57+
title = question.get_title()
58+
# 获取该问题的详细描述
59+
detail = question.get_detail()
60+
# 获取回答个数
61+
answer_num = question.get_answer_num()
62+
# 获取关注该问题的人数
63+
follower_num = question.get_follower_num()
64+
# 获取该问题所属话题
65+
topics = question.get_topics()
66+
# 获取排名第一的回答
67+
top_answer = question.get_top_answer()
68+
# 获取所有回答
69+
answers = question.get_all_answer()
70+
71+
print title # 输出:现实可以有多美好?
72+
print detail
73+
# 输出:
74+
# 本问题相对于“现实可以多残酷?传送门:现实可以有多残酷?
75+
# 题主: 昨天看了“现实可以有多残酷“。感觉不太好,所以我
76+
# 开了这个问题以相对应,希望能够“中和一下“。和那个问题题主不想
77+
# 把它变成“比惨大会“一样,我也不想把这个变成“鸡汤故事会“,或者
78+
# 是“晒幸福“比赛。所以大家从“现实,实际”的角度出发,讲述自己的
79+
# 美好故事,让大家看看社会的冷和暖,能更加辨证地看待世界,是此
80+
# 题和彼题共同的“心愿“吧。
81+
print answer_num # 输出:2441
82+
print follower_num # 输出:26910
83+
for topic in topics:
84+
print topic , # 输出:情感克制 现实 社会 个人经历
85+
print top_answer
86+
# 输出:<zhihu.Answer instance at 0x7f8b6582d0e0>
87+
# 一个Answer类对象
88+
print answers
89+
# 输出:<generator object get_all_answer at 0x7f8b66ba30a0>
90+
# 代表所有Answer的生成器
91+
92+
93+
Answer:获取答案信息
94+
~~~~~~~~~~~~~~~~~~~~~
95+
96+
Answer 代表了一个答案,处理知乎答案相关操作。创建一个 Answer 对象需传入该答案的 url ,如:
97+
98+
.. code-block:: python
99+
100+
from zhihu import Answer
101+
102+
answer_url = "http://www.zhihu.com/question/24269892/answer/29960616"
103+
answer = Answer(answer_url)
104+
105+
得到 Answer 对象后,可以获取该答案的一些信息:
106+
107+
.. code-block:: python
108+
109+
# -*- coding: utf-8 -*-
110+
from zhihu import Answer
111+
112+
answer_url = "http://www.zhihu.com/question/24269892/answer/29960616"
113+
answer = Answer(answer_url)
114+
# 获取该答案回答的问题
115+
question = answer.get_question()
116+
# 获取该答案的作者
117+
author = answer.get_author()
118+
# 获取该答案获得的赞同数
119+
upvote = answer.get_upvote()
120+
# 把答案输出为txt文件
121+
answer.to_txt()
122+
# 把答案输出为markdown文件
123+
answer.to_md()
124+
125+
print question
126+
# <zhihu.Question instance at 0x7f0b25d13f80>
127+
# 一个Question对象
128+
print question.get_title() # 输出:现实可以有多美好?
129+
print author
130+
# <zhihu.User instance at 0x7f0b25425b90>
131+
# 一个User对象
132+
print author.get_user_id() # 输出:田浩
133+
print upvote # 输出:9320
134+
135+
136+
User:获取用户信息
137+
~~~~~~~~~~~~~~~~~~~~~~~
138+
139+
User 代表一个用户,处理用户相关操作。创建一个 User 对象需传入该用户的 url ,如:
140+
141+
.. code-block:: python
142+
143+
from zhihu import User
144+
145+
user_url = "http://www.zhihu.com/people/jixin"
146+
user = User(user_url)
147+
148+
得到 User 对象后,可以获取该用户的一些信息:
149+
150+
.. code-block:: python
151+
152+
# -*- coding: utf-8 -*-
153+
from zhihu import User
154+
155+
user_url = "http://www.zhihu.com/people/jixin"
156+
user = User(user_url)
157+
# 获取用户ID
158+
user_id = user.get_user_id()
159+
# 获取该用户的关注者人数
160+
follower_num = user.get_follower_num()
161+
# 获取该用户关注的人数
162+
followee_num =user.get_followee_num()
163+
# 获取该用户提问的个数
164+
ask_num = user.get_ask_num()
165+
# 获取该用户回答的个数
166+
answer_num = user.get_answer_num()
167+
# 获取该用户收藏夹个数
168+
collection_num = user.get_collection_num()
169+
# 获取该用户获得的赞同数
170+
agree_num = user.get_agree_num()
171+
# 获取该用户获得的感谢数
172+
thanks_num = user.get_thanks_num()
173+
174+
# 获取该用户关注的人
175+
followees = user.get_followee()
176+
# 获取关注该用户的人
177+
followers = user.get_follower()
178+
# 获取该用户提的问题
179+
asks = user.get_ask()
180+
# 获取该用户回答的问题的答案
181+
answers = user.get_answer()
182+
# 获取该用户的收藏夹
183+
collections = user.get_collection()
184+
185+
print user_id # 黄继新
186+
print follower_num # 614840
187+
print followee_num # 8408
188+
print ask_num # 1323
189+
print answer_num # 786
190+
print collection_num # 44
191+
print agree_num # 46387
192+
print thanks_num # 11477
193+
194+
print followees
195+
# <generator object get_followee at 0x7ffcac3af050>
196+
# 代表所有该用户关注的人的生成器对象
197+
print followers
198+
# <generator object get_follower at 0x7ffcac3af0f0>
199+
# 代表所有关注该用户的人的生成器对象
200+
print asks
201+
# <generator object get_ask at 0x7ffcab9db780>
202+
# 代表该用户提的所有问题的生成器对象
203+
print answers
204+
# <generator object get_answer at 0x7ffcab9db7d0>
205+
# 代表该用户回答的所有问题的答案的生成器对象
206+
print collections
207+
# <generator object get_collection at 0x7ffcab9db820>
208+
# 代表该用户收藏夹的生成器对象
209+
210+
211+
Collection:获取收藏夹信息
212+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
213+
214+
Collection 代表一个收藏夹,处理收藏夹相关操作。创建一个 Collection 对象需传入该收藏夹的 url ,如:
215+
216+
.. code-block:: python
217+
218+
from zhihu import Collection
219+
220+
collection_url = "http://www.zhihu.com/collection/36750683"
221+
collection = Collection(collection_url)
222+
223+
得到 Collection 对象后,可以获取该收藏夹的一些信息:
224+
225+
.. code-block:: python
226+
227+
# -*- coding: utf-8 -*-
228+
from zhihu import Collection
229+
230+
collection_url = "http://www.zhihu.com/collection/36750683"
231+
collection = Collection(collection_url)
232+
233+
# 获取该收藏夹的创建者
234+
creator = collection.get_creator()
235+
# 获取该收藏夹的名字
236+
name = collection.get_name()
237+
# 获取该收藏夹下的所有答案
238+
answers = collection.get_all_answer()
239+
240+
print creator
241+
# <zhihu.User instance at 0x7fe1296f29e0>
242+
# 一个User对象
243+
print creator.get_user_id() # 稷黍
244+
print name # 给你一个不同的视角
245+
print answers
246+
# <generator object get_all_answer at 0x7fe12a29b280>
247+
# 代表所有答案的生成器对象
248+
249+
250+
综合实例
251+
~~~~~~~~~~~~~~~
252+
253+
有待添加
254+
255+
256+
257+
API
258+
-------
259+
260+
有待添加
261+
262+
263+
264+
联系我
265+
----------
266+
267+
- 知乎:@egrcc
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# 现实可以有多美好?
2+
## 作者: 田浩 赞同: 9320
3+
一个制毒者,凌晨被我们抓到,家里全是「制毒原料」,还有一台蒸馏机,几个塑料桶,我们进去的时候他还拿着棍子在桶里搅。被抓到当时情绪就崩溃了,说自己只是个木匠,
4+
一时鬼迷心窍才去缅甸买了这些机器和原料,并表示认罪,愿意积极配合,问我们能不能不死。说实话,按他的数量,少说几十公斤,虽然嘴上应承着,但心里觉得他死定了。
5+
6+
我们把人和东西抓回去之后,化验毒品,神转折是,发现他的制毒的原料和机器全是假的。去境外被人骗了。
7+
8+
最后是算预备犯罪还是犯罪未遂我忘记了,反正关了不到一年就放出来了。
9+
10+
对他来说,这现实简直太美好啦。
11+
12+
#### 原链接: http://www.zhihu.com/question/24269892/answer/29960616

0 commit comments

Comments
 (0)