Python中如何实现知乎爬虫并推广?

一直混知乎,看了很多大神写的爬虫,手痒写了个相关的项目:ZhihuVAPI 既然是 Python 写的,那么第一要素就是优雅 这个项目的优雅体现在以下方面:

  • 调用时属于链式调用,因此你可以轻易写出这种代码:
import ZhihuVAPI as zhihu
print(zhihu.Article('https://zhuanlan.zhihu.com/p/42381257').column.author.name)
  • 开箱即用,默认使用 Chrome 的 Cookies 你不需要任何设置和登录,引用后直接使用

  • 内容获取自由度高

获取列表的所有项

import ZhihuVAPI as zhihu
self=zhihu.People('iCheez')
for a in self.answers():
    a:zhihu.Answer # 让 IDE 智能提示
    print(a.excerpt)

获取列表的指定数量的项

import ZhihuVAPI as zhihu
self=zhihu.People('iCheez')
for a in self.answers(5):
    a:zhihu.Answer # 让 IDE 智能提示
    print(a.excerpt)

获取列表的从某处开始的指定数量的项

import ZhihuVAPI as zhihu
self=zhihu.People('iCheez')
for a in self.answers(count=5,start=50):
    a:zhihu.Answer # 让 IDE 智能提示
    print(a.excerpt)

获取列表的从某页开始的指定数量的项

import ZhihuVAPI as zhihu
self=zhihu.People('iCheez')
for a in self.answers(count=5,page=2):
    a:zhihu.Answer # 让 IDE 智能提示
    print(a.excerpt)

这些操作都只需要调整一两个参数就可以实现.

而且,ZhihuVAPI 支持以下三种初始化:

  1. URL 初始化:zhihu.People('https://www.zhihu.com/people/iCheez/activities')
  2. ID 初始化:zhihu.People('e4f87c3476a926c1e2ef51b4fcd18fa3')
  3. URL_Token 初始化(仅对用户对象有效):zhihu.People('iCheez')

如果你看了有兴趣的话可以去我的 Github 主页看一下: https://github.com/CheezOne/ZhihuVAPI


Python中如何实现知乎爬虫并推广?

33 回复

提个小建议,这种小东西就别发布了哈。
另外,据我所知,v2 一部人 (包括本人) 很嫌弃知乎的。


我无法理解你的问题。

1L 给了-1 我给楼主加回来 逃~~

挺漂亮的

ps:ZhihuVAPI 这个命名方式有点怪

咳咳,可能是因为好名字都被别人用了

看楼主问了不少问题,终于看到成果了…

最后智能提示的问题还没解决吗…

很支持楼主,但有个问题,这个爬虫的设计有多 robust ?
另外代理和多线程方面有支持吗?

支持楼主,只要是原创的东西就挺好的

支持楼主,我觉着分享不论大小

嫌弃+1, 但是知乎早期的一些回答还是不错的。

上面👆代码有,直接标注:

p:zhihu.People

只能这样了

啥都没有这只是初成品哈哈哈,未来也不知道会不会完善地支持,所以我上面的爬虫加了个(?)

直接调从浏览器里摸索出来的知乎 API 是不是比查网页更容易被封?

可以的,能解密 chrome 的 cookie

pywin32? 只支持 Windows 吗?

#17 被封是什么意思?意思是 API 地址变动吗?还是说爬太久被封?

#19 咳咳,如果你要使用 Chrome 的 Cookies 的话,确实只支持 Windows

#18 可惜只能在 Windows 平台

就是把爬虫的 IP 封掉

好像只有验证码吧

<br>class Question(Container):<br> """知乎的问题对象"""<br><br> def __init__(self, id):<br> super().__init__(id, '问题', 'question')<br> if 2 == 1: # 单纯为了编辑器能智能提示<br> self.question_type = ''<br> self.created = ''<br> self.updated_time = ''<br> self.is_editable = ''<br> self.is_reportable = ''<br> self.allow_delete = ''<br> self.admin_closed_comment = ''<br> self.has_publishing_draft = ''<br> self.answer_count = ''<br> self.comment_count = ''<br> self.follower_count = ''<br> self.collapsed_answer_count = ''<br> self.comment_permission = ''<br> self.detail = ''<br> self.editable_detail = ''<br> self.status = ''<br> self.relationship = ''<br> self.topics = ''<br> self.author = ''<br> self.can_comment = ''<br> self.suggest_edit = ''<br> self.thumbnail_info = ''<br> self.review_info = ''<br> self.mute_info = ''<br>


6666

顶一波吧 star 了

#26 谢谢!

没办法…只能这样了

大神,您好,我是萌新,我想问问您,有接触过用 python 爬取 app 数据么

你直接下载个模拟器,开 fiddler 抓就行了

版本要求太高了吧 我 3.5
zhihu.info(f’People 对象 {id} ({self})初始化’)
^
SyntaxError: invalid syntax

能导出一个人的所有回答么?

回到顶部