为了账号安全,请及时绑定邮箱和手机立即绑定

用Zhihu-OAuth库轻松爬取知乎各类数据

标签:
Java Python

去年(手动滑稽)某日想爬取知乎特定话题下的全部回答数据,于是翻出以前写的知乎话题爬虫跑运行了下,没想到遇到一个一直没能解决的bug,貌似是抓包到的API返回的JSON数据格式有问题,于是遭遇爬知乎的滑铁卢。幸而想起有个叫“Zhihu-OAuth”的库,于是了解了下并上手一用,还蛮方便的,于是介绍给想爬取知乎数据的小伙伴们。

这是知乎用户“7sDream”开源的Python库,github地址

https://img1.sycdn.imooc.com//5d311e71000117fa07190505.jpg

Zhihu-OAuth 文档

https://img1.sycdn.imooc.com//5d311e740001eaff07050381.jpg

其中能爬取的数据非常全、非常丰富:用户动态、答案、文章、收藏夹、专栏、评论、首页信息流、知乎live、特定用户的信息、分享、问题、话题、私信会话和私信信息等等全部囊括在内

https://img1.sycdn.imooc.com//5d311e7800015bd306920390.jpg

使用的方法也很简单,先是安装库,zhihu_oauth 支持 Python 2 和 Python 3:

pip install zhihu-oauth

接下来以爬取知乎特定话题下的全部回答为例,简单介绍下该库用法。以下为登录知乎,并保存token的代码。

https://img1.sycdn.imooc.com//5d311e7c0001e56f05640309.jpg

其中账号和密码需要每个人自己输入。账号为邮箱或手机号(前缀"+86")

https://img1.sycdn.imooc.com//5d311e7f0001d9ca07120351.jpg

后续就可以直接加载token来登录知乎。本回爬取的知乎话题为“长大是什么感觉?”

链接为:https://www.zhihu.com/question/27987434

ID为:“27987434”。

https://img1.sycdn.imooc.com//5d311e830001271b07240357.jpg

具体代码如下,其中answers为生成器,需要用for循环来提取每个回答的数据,具体都能提取那些数据可以参见:Answer类的文档说明。包含了几乎所有可以提取的数据。

https://img1.sycdn.imooc.com//5d311e860001346507230366.jpg

代码里注释掉了答主的诸多信息,因为发现提取时很容易被知乎反爬限制,而显示IP或账号异常,从而需要输入验证码。

https://img1.sycdn.imooc.com//5d311e89000153be07170466.jpg

最后保存数据用的是pandas库,全文代码也是在jupyter notebook里一步步运行的。此处因人而异,其他存储方式亦可。

本文简单介绍下Zhihu-OAuth库,因为上手还蛮简单的,很推荐想爬知乎数据而不得的小伙伴尝试下。后续看情况会更详细的讲下其他用法,看大家觉得需要吗?



作者:Deserts_X
链接:https://www.jianshu.com/p/d89d2ae8fe57


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消