zhihu-crawler

知乎关键词搜索、热榜、用户信息、回答、专栏文章、评论等信息的抓取程序


Keywords
zhihu, zhihu_crawler, zhihu_scraper, crawler, scraper, scrapy, spider, zhihu-crawler, zhihu-scraper, zhihu-spider
License
MIT
Install
pip install zhihu-crawler==0.0.2

Documentation

免责声明:本项目涉及仅供学习交流使用。禁止将本项目或者Github源码用于任何商业目的。由此引发的任何法律纠纷与本人无关!

本程序支持关键词搜索、热榜、用户信息、回答、专栏文章、评论等信息的抓取。代码思路来源于facebook_scraper

项目目录:
__init__.py 为程序的对外统一入口
constants.py 常量
exceptions.py 自定义异常
extractors.py 数据清洗
page_iterators.py 简单的页面处理
zhihu_scraper.py 页面请求、cookie设置
zhihu_types.py 类型提示、检查。项目自定义类型
注意事项 项目内有部分异步操作,在模块引用之前需要使用猴子补丁; 同时该项目没有对ip限制、登录做针对性处理

# 猴子补丁
from gevent import monkey
monkey.patch_all()
from zhihu_crawler import *

搜索采集使用案例:

if __name__ == '__main__':
    for info in search_crawl(key_word='天空', count=10):
        print(info)
# 可传入data_type 指定搜索类型
    for info in search_crawl(key_word='天空', count=10, data_type='answer'):
        print(info)

用户信息采集使用案例(数据样例请游览user_info.json):

    for info in user_crawler('wo-men-de-tai-kong',
                             answer_count=2,
                             zvideo_count=3,
                             question_count=2,
                             article_count=3,
                             column_count=2,
                             pin_count=3,
                             following=3,
                             followers=3,
                             following_columns=3,
                             following_questions=3,
                             following_topics=3,
                             comment_count=3,
                             drill_down_count=3,
                             ):
        print(info)
        

热点问题采集使用案例(数据样例请游览hot_question.json):

if __name__ == '__main__':
    # 采集 前10个问题, 每个问题采集10条回答
    for info in hot_questions_crawl(question_count=10, answer_count=10):
        print(info)

    # 可传入period 指定热榜性质。如小时榜、日榜、周榜、月榜
    # 传入domains 采集指定主题的问题
    for info in hot_questions_crawl(question_count=10, period='day', domains=['1001', 1003]):
        print(info)

zhihu_crawl目录: 工具类