Windoze

Windoze 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

Windoze 评论了文章 · 2019-05-08

ZhihuVAPI:用Python优雅地玩知乎

ZhihuVAPI:优雅地玩知乎

简介

ZhihuVAPI是什么?

ZhihuVAPI 是一个可以让你以一种优雅的形式调用知乎数据的 Python 包.

怎么安装或者更新 ZhihuVAPI?

pip install -U ZhihuVAPI

使用

引用 ZhihuVAPI

import ZhihuVAPI as zhihu

后面的as zhihu是别称的意思,便于输入.

配置用户

配置脚本使用的 cookies,一共有两种方法.

  1. 什么都不管,脚本会默认读取 Chrome 或者 Cent 的 cookies.如果你是其他类 Chrome 的浏览器,你可以在config.pycookiepath自定义cookies文件的路径.
  2. config.py禁用is_use_chrome_cookies后,你可以在里面自定义headers.

读取自己

import ZhihuVAPI as zhihu
self=zhihu.self
print(f'我的名字叫{self.name},目前获得了{self.voteup_count}个赞同,{self.favorited_count}个收藏,有{self.followers_count}个粉丝.提出了{self.question_count}个问题,撰写了{self.answer_count}个答案,{self.articles_count}篇文章,拥有{self.columns_count}个专栏.')

输出:

我的名字叫以茄之名,目前获得了14480个赞同,7654个收藏,有876个粉丝.提出了24个问题,撰写了49个答案,7篇文章,拥有2个专栏.

基本操作

ZhihuVAPI 支持以下三种初始化:

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

对于点赞列表,粉丝列表等数据,ZhihuVAPI支持以下方式调用:

获取列表的所有项

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)

获取答案

import ZhihuVAPI as zhihu
a=zhihu.Answer('https://www.zhihu.com/question/31343133/answer/58763430')
for p in a.voters(count=5):
    p:zhihu.People # 让 IDE 智能提示
    print(p.name)
    if p.is_waterman():
        print(f'{p.name} 是水军')
print(f'这个在 "{a.question.title}" 下的回答得到了{a.voteup_count}个赞同,我{"已经赞同了"if a.is_voting else "还没有赞同" }')

for c in a.comments():
    c:zhihu.Comment
    print(c.content)
a.down() #反对
a.undown() #取消反对(以此类推)
a.vote() # 赞同
a.thank() # 感谢
# a.collect([zhihu.Collection('你自己的收藏夹 ID'),])

输出:

日志:获取以茄之名的点赞列表
午夜
斗战胜佛
Chern
万铆工
言知
这个答案在 "以下这篇文章关于「四大发明」的观点是否客观、准确?" 下的回答得到了201个赞同,我还没有赞同

获取用户

import ZhihuVAPI as zhihu
person = zhihu.People('zhihuadmin')

for p in person.followers(count=5): # 粉丝
    p: zhihu.People  # 让 IDE 智能提示
    print(p.name)

for a in person.answers(count=5): # 答案
    a: zhihu.Answer  # 让 IDE 智能提示
    print(a.voteup_count)

for ar in person.articles(count=5): #文章
    ar: zhihu.Article  # 让 IDE 智能提示
    print(ar.voteup_count)

for m in person.msgs(count=5): #私信
    print(m)

for pin in person.pins(count=5): #想法
    pin: zhihu.Pin  # 让 IDE 智能提示
    print(pin.voteup_count)


person.block() # 屏蔽
person.unblock() # 取消屏蔽(以此类推)
person.send('你好,我是{zhihu.self.name}') # 发送私信

获取专栏

import ZhihuVAPI as zhihu
column = zhihu.Column('cheezpython')
print(column.title)
for ar in column.articles():
    ar: zhihu.Article  # 让 IDE 智能提示
    print(f'{ar.title} 一共有 {ar.voteup_count} 个赞')


for p in column.coauthors():
    p: zhihu.People  # 让 IDE 智能提示
    print(f'{p.name} 他有 {p.voteup_count} 个赞')

column.follow() #关注

获取文章

import ZhihuVAPI as zhihu
ar=zhihu.Article('https://zhuanlan.zhihu.com/p/39747259')
for p in ar.voters(count=5):
    p:zhihu.People # 让 IDE 智能提示
    print(p.name)
    if p.is_waterman():
        print(f'{p.name} 是水军')
print(f'这篇文章 "{ar.title}" 得到了{ar.voteup_count}个赞同,我{"已经赞同了"if ar.is_voting else "还没有赞同" }')

ar.down() #反对
ar.undown() #取消反对(以此类推)
ar.vote() # 赞同
ar.thank() # 感谢
# ar.collect([zhihu.Collection('你自己的收藏夹 ID'),])

获取收藏夹

import ZhihuVAPI as zhihu 
co = zhihu.Collection('https://www.zhihu.com/collection/62217998')
print(f'这个收藏夹的名字是{co.title}')
for ct in co.contents(count=10):
    if ct.type == 'answer':
        print(f'{ct.content.excerpt}\n') 

获取问题

import ZhihuVAPI as zhihu 
查看原文

Windoze 回答了问题 · 2018-12-03

centos 7.2(1511) 和7.3(1611)哪个更稳定?

花钱买了技术支持的那个版本最稳定,花的钱越多越稳定。
如果你没花钱,那么那个都不稳定。

关注 6 回答 5

Windoze 回答了问题 · 2018-08-04

Mac下Clion怎么使用GCC的类库呢?

epoll不是“GCC的类库”,它是Linux专有API,在Mac上无论你用什么编译器都一样用不了的。
Mac和FreeBSD有一个类似的功能叫kqueue。

关注 3 回答 1

Windoze 回答了问题 · 2017-10-23

pycharm CreateProcess error=2, 系统找不到指定的文件?

你把anaconda再装上呗

关注 4 回答 3

Windoze 回答了问题 · 2017-10-12

解决提问:在分散刷新的时间分配中,存取周期的定义变得模糊了?

假设我吃一个苹果需要5分钟,然后需要歇10分钟才能吃第二个苹果,那么我吃苹果的“时间间隔”是多少分钟?10分钟还是15分钟?

关注 2 回答 1

Windoze 回答了问题 · 2017-02-13

解决这个用正则表达式怎么写?用python或JavaScript都可以。

s/(-w \/var\/www\/)([^\s]*)(.*)/$1$2$3 $2/g

关注 3 回答 2

Windoze 回答了问题 · 2016-04-04

解决较适合 Mac Pro 2015 使用的外接显示器有哪些?(不要太贵的)

Mac Pro有2015版了?这玩意儿不是自打13年出来到现在就没更新过么?

关注 8 回答 7

Windoze 回答了问题 · 2015-12-30

解决C和C++申请和释放内存问题

当然是要用的时候申请内存不用的时候释放内存。
用指针会崩溃当然就不要用裸指针了,C++里那么多智能指针干吗不用呢?
以你评论里的代码为例,你写成这样就不纠结了:

std::unique_ptr<Object> ptr(new Object(...));
ptr->...

然后你就不用写delete了,而且这个ptr超出作用域之后new出来的Object也自动干掉了。
多好。

关注 5 回答 4

Windoze 回答了问题 · 2015-12-30

解决C++能不能在屏幕的任意位置上输出?不用ncurses

你想想ncurse是怎么实现的……
不过话说回来,ncurse帮你干了一大堆脏活,如果你不用ncurse,这些脏活就得自己干了。

关注 3 回答 2

Windoze 回答了问题 · 2015-12-30

CLion如何添加依赖库 ? 需要把mysql/Connector c++放入 用cpp连接数据库

这儿有一个CMake module用来找mysql connector
https://github.com/windoze/fibio/blob/master/cmake/Modules/FindMySQLConnectorCPP.cmake
然后你就可以写find_package(MySQLConnectorCPP)

关注 3 回答 2

认证与成就

  • 获得 489 次点赞
  • 获得 10 枚徽章 获得 1 枚金徽章, 获得 5 枚银徽章, 获得 4 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2012-11-29
个人主页被 2.6k 人浏览