{"id":26458561,"url":"https://github.com/cheezone/zhihuvapi","last_synced_at":"2025-07-29T10:37:44.361Z","repository":{"id":57478293,"uuid":"145218281","full_name":"cheezone/ZhihuVAPI","owner":"cheezone","description":"优雅地玩知乎","archived":false,"fork":false,"pushed_at":"2018-10-13T00:43:35.000Z","size":40,"stargazers_count":62,"open_issues_count":1,"forks_count":13,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T02:21:26.329Z","etag":null,"topics":["crawler","python","zhihu"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cheezone.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-18T12:28:56.000Z","updated_at":"2023-05-19T08:54:35.000Z","dependencies_parsed_at":"2022-09-26T17:41:09.104Z","dependency_job_id":null,"html_url":"https://github.com/cheezone/ZhihuVAPI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheezone%2FZhihuVAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheezone%2FZhihuVAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheezone%2FZhihuVAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheezone%2FZhihuVAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cheezone","download_url":"https://codeload.github.com/cheezone/ZhihuVAPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244326210,"owners_count":20435122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crawler","python","zhihu"],"created_at":"2025-03-19T00:06:10.539Z","updated_at":"2025-03-19T00:06:11.065Z","avatar_url":"https://github.com/cheezone.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ZhihuVAPI:优雅地玩知乎\n\n## 简介\n\n### ZhihuVAPI是什么?\n\nZhihuVAPI 是一个可以让你以一种优雅的形式调用知乎数据的 Python 包.\n\n### 怎么安装或者更新 ZhihuVAPI?\n\n`pip install -U ZhihuVAPI`\n\n## 使用\n\n### 引用 ZhihuVAPI\n\n`import ZhihuVAPI as zhihu`\n\n后面的`as zhihu`是别称的意思,便于输入.\n\n### 配置用户\n\n配置脚本使用的 `cookies`,一共有两种方法.\n\n1. 什么都不管,脚本会默认读取 Chrome 或者 Cent 的 cookies.如果你是其他类 Chrome 的浏览器,你可以在`config.py`的`cookiepath`自定义cookies文件的路径.\n2. 在`config.py`禁用`is_use_chrome_cookies`后,你可以在里面自定义`headers`.\n\n\n**Mac 用户需要设置自定义的 cookie 和 hash**\n\n登录之后 Zhihu 后，访问 [这个接口](https://api.zhihu.com/people/self)，拿到 json 对象第一层的 id 值。\n配置 `ZhihuVAPI/config.py` 文件，`is_use_chrome_cookies = False` ，并且添加你的 hash 属性到文件中，同时使用自定义的 headers，注意将自己知乎页面的 cookie 值填入（仅补全 `Cookie': '_xsrf=...;   z_c0=...'` 省略号代表的值即可）。\n\n```\n// 示例\n// 接口的返回值\n{\n    id: \"a8bXXXXXXXXXXXXXXXX475\", // 这个就是 hash\n    favorite_count: xxx,\n    voteup_count: xxx,\n    live_count: xxx,\n    ...// 其他属性\n}\n\n// config.py\nhash = 'a8bXXXXXXXXXXXXXXXX475'\nis_use_chrome_cookies = False\n```\n\n使用 `pip install -U --no-dependencies ZhihuVAPI` 来下载依赖可以略过 pywin32 的依赖下载。\n\n\n### 读取自己\n\n```Python\nimport ZhihuVAPI as zhihu\nself=zhihu.self\nprint(f'我的名字叫{self.name},目前获得了{self.voteup_count}个赞同,{self.favorited_count}个收藏,有{self.followers_count}个粉丝.提出了{self.question_count}个问题,撰写了{self.answer_count}个答案,{self.articles_count}篇文章,拥有{self.columns_count}个专栏.')\n\n```\n输出:\n```\n我的名字叫以茄之名,目前获得了14480个赞同,7654个收藏,有876个粉丝.提出了24个问题,撰写了49个答案,7篇文章,拥有2个专栏.\n```\n\n### 基本操作\n\nZhihuVAPI 支持以下三种初始化:\n1. **URL 初始化**:`zhihu.People('https://www.zhihu.com/people/iCheez/activities')`\n2. **ID 初始化**:`zhihu.People('e4f87c3476a926c1e2ef51b4fcd18fa3')`\n3. **URL_Token 初始化(仅对用户对象有效)**:`zhihu.People('iCheez')`\n\n对于点赞列表,粉丝列表等数据,ZhihuVAPI支持以下方式调用:\n\n#### 获取列表的所有项\n```Python\nimport ZhihuVAPI as zhihu\nself=zhihu.People('iCheez')\nfor a in self.answers():\n    a:zhihu.Answer # 让 IDE 智能提示\n    print(a.excerpt)\n```\n\n#### 获取列表的指定数量的项\n```Python\nimport ZhihuVAPI as zhihu\nself=zhihu.People('iCheez')\nfor a in self.answers(5):\n    a:zhihu.Answer # 让 IDE 智能提示\n    print(a.excerpt)\n```\n\n\n#### 获取列表的从某处开始的指定数量的项\n```Python\nimport ZhihuVAPI as zhihu\nself=zhihu.People('iCheez')\nfor a in self.answers(count=5,start=50):\n    a:zhihu.Answer # 让 IDE 智能提示\n    print(a.excerpt)\n```\n\n#### 获取列表的从某页开始的指定数量的项\n```Python\nimport ZhihuVAPI as zhihu\nself=zhihu.People('iCheez')\nfor a in self.answers(count=5,page=2):\n    a:zhihu.Answer # 让 IDE 智能提示\n    print(a.excerpt)\n```\n\n### 获取答案\n\n```Python\nimport ZhihuVAPI as zhihu\na=zhihu.Answer('https://www.zhihu.com/question/31343133/answer/58763430')\nfor p in a.voters(count=5):\n    p:zhihu.People # 让 IDE 智能提示\n    print(p.name)\n    if p.is_waterman():\n        print(f'{p.name} 是水军')\nprint(f'这个在 \"{a.question.title}\" 下的回答得到了{a.voteup_count}个赞同,我{\"已经赞同了\"if a.is_voting else \"还没有赞同\" }')\n\nfor c in a.comments():\n    c:zhihu.Comment\n    print(c.content)\na.down() #反对\na.undown() #取消反对(以此类推)\na.vote() # 赞同\na.thank() # 感谢\n# a.collect([zhihu.Collection('你自己的收藏夹 ID'),])\n\n```\n输出:\n```\n日志：获取以茄之名的点赞列表\n午夜\n斗战胜佛\nChern\n万铆工\n言知\n这个答案在 \"以下这篇文章关于「四大发明」的观点是否客观、准确？\" 下的回答得到了201个赞同,我还没有赞同\n```\n\n\n### 获取用户\n```Python\nimport ZhihuVAPI as zhihu\nperson = zhihu.People('zhihuadmin')\n\nfor p in person.followers(count=5): # 粉丝\n    p: zhihu.People  # 让 IDE 智能提示\n    print(p.name)\n\nfor a in person.answers(count=5): # 答案\n    a: zhihu.Answer  # 让 IDE 智能提示\n    print(a.voteup_count)\n\nfor ar in person.articles(count=5): #文章\n    ar: zhihu.Article  # 让 IDE 智能提示\n    print(ar.voteup_count)\n\nfor m in person.msgs(count=5): #私信\n    print(m)\n\nfor pin in person.pins(count=5): #想法\n    pin: zhihu.Pin  # 让 IDE 智能提示\n    print(pin.voteup_count)\n\n\nperson.block() # 屏蔽\nperson.unblock() # 取消屏蔽(以此类推)\nperson.send('你好,我是{zhihu.self.name}') # 发送私信\n```\n\n### 获取专栏\n```Python\nimport ZhihuVAPI as zhihu\ncolumn = zhihu.Column('cheezpython')\nprint(column.title)\nfor ar in column.articles():\n    ar: zhihu.Article  # 让 IDE 智能提示\n    print(f'{ar.title} 一共有 {ar.voteup_count} 个赞')\n\n\nfor p in column.coauthors():\n    p: zhihu.People  # 让 IDE 智能提示\n    print(f'{p.name} 他有 {p.voteup_count} 个赞')\n\ncolumn.follow() #关注\n\n```\n\n\n### 获取文章\n```Python\nimport ZhihuVAPI as zhihu\nar=zhihu.Article('https://zhuanlan.zhihu.com/p/39747259')\nfor p in ar.voters(count=5):\n    p:zhihu.People # 让 IDE 智能提示\n    print(p.name)\n    if p.is_waterman():\n        print(f'{p.name} 是水军')\nprint(f'这篇文章 \"{ar.title}\" 得到了{ar.voteup_count}个赞同,我{\"已经赞同了\"if ar.is_voting else \"还没有赞同\" }')\n\nar.down() #反对\nar.undown() #取消反对(以此类推)\nar.vote() # 赞同\nar.thank() # 感谢\n# ar.collect([zhihu.Collection('你自己的收藏夹 ID'),])\n\n```\n\n### 获取收藏夹\n```Python\nimport ZhihuVAPI as zhihu \nco = zhihu.Collection('https://www.zhihu.com/collection/62217998')\nprint(f'这个收藏夹的名字是{co.title}')\nfor ct in co.contents(count=10):\n    if ct.type == 'answer':\n        print(f'{ct.content.excerpt}\\n') \n```\n\n\n### 获取问题\n```Python\nimport ZhihuVAPI as zhihu \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheezone%2Fzhihuvapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheezone%2Fzhihuvapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheezone%2Fzhihuvapi/lists"}