Skip to content

Commit ba72000

Browse files
committed
Merge pull request egrcc#56 from johnnyluck/master
Add new feature Post and Column for zhihu with documentation and test
2 parents e283907 + f915be2 commit ba72000

3 files changed

Lines changed: 417 additions & 0 deletions

File tree

README.rst

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,101 @@ Collection 代表一个收藏夹,处理收藏夹相关操作。创建一个 Co
351351
print answers
352352
# <generator object get_all_answer at 0x7fe12a29b280>
353353
# 代表所有答案的生成器对象
354+
355+
356+
Post:获取知乎文章
357+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
358+
359+
Post 代表一个文章, Post 对象需传入该文章的 url ,如:
360+
361+
.. code-block:: python
362+
363+
from zhihu import Post
364+
365+
url = "http://zhuanlan.zhihu.com/p/20235601"
366+
post = Post(url)
367+
368+
得到 Post 对象后,可以获取该文章的一些信息:
369+
370+
.. code-block:: python
371+
372+
# -*- coding: utf-8 -*-
373+
from zhihu import Post
374+
375+
url = "http://zhuanlan.zhihu.com/p/20770968"
376+
post = Post(url)
377+
378+
# 获取该文章的标题
379+
title = post.get_title()
380+
# 获取该文章的内容
381+
content = post.get_content()
382+
# 获取该文章的作者
383+
author = post.get_author()
384+
# 获取该文章的所属专栏
385+
column = post.get_column()
386+
# 获取该文章所属话题
387+
topics = post.get_topics()
388+
389+
print title # 输出:夜读书|四月十九日
390+
print content
391+
# 输出:
392+
# <p>各位,晚上好。<br> ...
393+
# ......
394+
print author
395+
# 输出: <zhihu.User instance at 0x75ec0fd0>
396+
for topic in topics:
397+
print topic, # 输出:阅读
398+
print column
399+
# 输出:<zhihu.Column instance at 0x75eb3eb8>
400+
# Column类对象
401+
402+
Column:获取知乎专栏
403+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
404+
405+
Column 代表一个专栏 Column 对象需传入该专栏 url ,如:
406+
407+
.. code-block:: python
408+
409+
from zhihu import Column
354410
411+
url = "http://zhuanlan.zhihu.com/daily"
412+
column = Column(url)
413+
414+
得到 Column 对象后,可以获取该专栏的一些信息:
415+
416+
.. code-block:: python
417+
418+
# -*- coding: utf-8 -*-
419+
from zhihu import Column
420+
421+
url = "http://zhuanlan.zhihu.com/daily"
422+
column = Column(url)
423+
424+
# 获取该专栏的标题
425+
title = column.get_title()
426+
# 获取该专栏的描述
427+
description = column.get_description()
428+
# 获取该专栏的作者
429+
creator = column.get_creator()
430+
# 获取该专栏的文章数
431+
posts_num = column.get_posts_num()
432+
# 获取该专栏的所有文章
433+
posts = column.get_all_posts()
434+
435+
print title # 输出:知乎日报
436+
print description
437+
# 输出:
438+
# 知乎日报启动画面接受所有摄影师朋友们的投稿,将作品链接(如 Flickr、LOFTER 等等),发至邮箱 qidong (at) zhihu.com,并附上您的知乎个人页面地址即可。
439+
#
440+
# 详细投稿要求: http://t.cn/zQyEpN5
441+
442+
print creator
443+
# 输出:<zhihu.User instance at 0x75e33eb8>
444+
# User类对象
445+
print posts_num # 150
446+
print posts
447+
# 输出:<generator object get_all_posts at 0x75e33bc0>
448+
# Post类对象
355449
356450
综合实例
357451
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -669,7 +763,104 @@ zhihu.Collection ---- 知乎收藏夹操作类
669763
**Returns**: 包含该收藏夹下前 n 个回答的 generator 对象。其中每一个元素为代表一个回答的 Answer 对象
670764

671765

766+
zhihu.Column ---- 知乎专栏操作类
767+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
768+
769+
*class* zhihu. **Column** (*Column_url*)
770+
771+
Column 以 url 为唯一标识,创建一个 Column 对象实例必须传入一个代表知乎专栏的 url (如:http://zhuanlan.zhihu.com/daily),需包含“http(s)://”。如果传入的不是代表专栏的 url ,程序会报错。通过调用 Column 类的一系列方法,获得该专栏的一些信息。
772+
773+
**Parameters**:
774+
* **column_url** -- 该专栏的链接,字符串
775+
776+
**Returns**: 一个 Column 实例对象
777+
778+
**get_title** ()
779+
780+
得到该专栏的题目。
781+
782+
**Returns**: 一个代表题目的字符串
783+
784+
**get_creator** ()
785+
786+
得到该专栏的创建者 。
787+
788+
**Returns**: 一个 User 对象
789+
790+
**get_description** ()
791+
792+
得到该专栏的描述
793+
794+
**Returns**: 一个专栏描述的字符串
795+
796+
**get_followers_num** ()
797+
798+
得到该专栏的关注人数
799+
800+
**Returns**: 一个 int 型的整数
801+
802+
**get_posts_num** ()
803+
804+
得到该专栏的所有文章数
805+
806+
**Returns**: 一个 int 型的整数
807+
808+
**get_content** ()
809+
810+
得到该答案的内容。
811+
812+
**Returns**: 一个字符串
813+
814+
**get_posts** ()
815+
816+
得到该专栏的所有文章
817+
818+
**Returns**:包含所有文章的 generator 对象。其中每一个元素为代表一个文章 Post 对象
819+
820+
821+
zhihu.Post ---- 知乎文章操作类
822+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
823+
824+
*class* zhihu. **Post** (*Post_url*)
825+
826+
Post 以 url 为唯一标识,创建一个 Post 对象实例必须传入一个代表知乎文章的 url (如:http://zhuanlan.zhihu.com/p/20235601),需包含“http(s)://”。如果传入的不是代表文章的 url ,程序会报错。通过调用 Post 类的一系列方法,获得该文章的一些信息。
827+
828+
**Parameters**:
829+
* **post_url** -- 该文章的链接,字符串
830+
831+
**Returns**: 一个 Post 实例对象
832+
833+
**get_title** ()
834+
835+
得到该文章的题目。
836+
837+
**Returns**: 一个代表题目的字符串
838+
839+
**get_author** ()
840+
841+
得到该文章的作者 。
842+
843+
**Returns**: 一个 User 对象
844+
845+
**get_content** ()
846+
847+
得到该文章的内容
848+
849+
**Returns**: 一个文章描述的字符串
672850

851+
**get_topics** ()
852+
853+
得到该文章的话题。
854+
855+
**Returns**: 一个列表
856+
857+
**get_column** ()
858+
859+
得到该文章的所属专栏
860+
861+
**Returns**:一个 Column 的实例对象
862+
863+
673864
联系我
674865
----------
675866

test.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
from zhihu import Answer
2626
from zhihu import User
2727
from zhihu import Collection
28+
from zhihu import Post
29+
from zhihu import Column
2830

2931

3032
def question_test(url):
@@ -197,6 +199,56 @@ def collection_test(collection_url):
197199
# 代表所有答案的生成器对象
198200

199201

202+
def post_test(post_url):
203+
post = Post(post_url)
204+
205+
# 获取该文章的标题
206+
title = post.get_title()
207+
# 获取该文章的内容
208+
content = post.get_content()
209+
# 获取该文章的作者
210+
author = post.get_author()
211+
# 获取该文章的所属专栏
212+
column = post.get_column()
213+
# 获取该文章所属话题
214+
topics = post.get_topics()
215+
216+
print title # 输出:
217+
print content
218+
for topic in topics:
219+
print topic, # 输出:
220+
print "\n"
221+
print author
222+
# 输出:<zhihu.User instance at 0x7f8b6582d0e0>
223+
# User类对象
224+
print column
225+
# 输出:<zhihu.Column instance at 0x7f8b6582d0e0>
226+
# Column类对象
227+
228+
229+
def column_test(column_url):
230+
231+
column = Column(column_url)
232+
233+
# 获取该专栏的标题
234+
title = column.get_title()
235+
# 获取该专栏的描述
236+
description = column.get_description()
237+
# 获取该专栏的作者
238+
creator = column.get_creator()
239+
# 获取该专栏的文章数
240+
posts_num = column.get_posts_num()
241+
# 获取该专栏的所有文章
242+
posts = column.get_all_posts()
243+
244+
print title
245+
print description
246+
print creator
247+
# 输出:<zhihu.User instance at 0x7f8b6582d0e0>
248+
# User类对象
249+
print posts_num
250+
print posts
251+
200252
def test():
201253
url = "http://www.zhihu.com/question/24269892"
202254
question = Question(url)
@@ -231,6 +283,10 @@ def main():
231283
user_test(user_url)
232284
collection_url = "http://www.zhihu.com/collection/36750683"
233285
collection_test(collection_url)
286+
post_url = "http://zhuanlan.zhihu.com/p/20770968"
287+
post_test(post_url)
288+
column_url = "http://zhuanlan.zhihu.com/daily"
289+
column_test(column_url)
234290
test()
235291

236292

0 commit comments

Comments
 (0)