NightMarcher
zhihu-crawler
Python

徒手实现定时爬取知乎,从中发掘有价值的信息,并可视化爬取的数据作网页展示。

Last updated Oct 25, 2025
67
Stars
9
Forks
2
Issues
0
Stars/day
Attention Score
0
Language breakdown
No language data available.
Files click to expand
README

ZhihuCrawler

徒手实现定时爬取知乎,从中发掘有价值的信息,并可视化爬取的数据作网页展示。项目目前正在开发,欢迎前来交流学习!

问题及解决方案

  • [x] 日志
程序运行时统一初始化。由于logging应用了单例模式,之后可以直接使用配置好的logging
  • [x] 第三方库版本管理
Pipenv,功能强大,方便易用
  • [x] 代码版本控制
Git,使用.gitignore来忽略日志文件夹、vim临时文件、缓存文件文件夹
  • [x] 配置管理
Yaml,可读性好,语法简单
  • [x] 文件组织
将相同功能的文件放于同一文件夹下,*.py文件组织成包
  • [x] 性能分析
使用自己定义的装饰器函数来测量函数运行的时间
  • [x] 数据爬取
使用Selenium + Webdriver爬取动态网页,使用Requests库请求部分已有接口
  • [x] 数据解析
Xpath,速度快,使用简单
  • [x] 爬取标记
使用Redis存储已爬取的话题id及其下信息的摘要值,数据类型选取为hash
  • [x] 数据序列化方式选取
Json,通用序列化方案
  • [x] 摘要算法选取
MD5,选择原因见Hashing Algorithms In Python。此外经测试,base16速度仅次于MD5,base64次于base16,base32最慢;整体而言,直接加密'汉字'类型的字符串,比加密'\\u6c49\\u5b57'类型的字符串速度要快,因此json.dumps的时候ensureascii参数要设置为False
  • [x] 数据持久化
MongoDB,时间类型数据统一存储为格林尼治时间
  • [x] 定时任务
Flask-APScheduler,使用简单,轻量级方案,且支持多种数据库的持久化
  • [ ] 任务管理
Supervisor方便易用
  • [x] 并发实现
Multiprocessing.dummy多线程,易于移植,方法简单
  • [ ] 话题树建立及展示
  • [x] 网页展示
Flask框架 + Bootstrap-Flask
  • [x] 话题关注人数及问题数可视化
使用Pyecharts 1.0,已基本实现(散点图显示异常,待观察)
  • [ ] 热门关键词爬取、处理及可视化
Worldcloud + Jieba
  • [ ] 获取访问页面的用户IP,并分析其所在区域
  • [ ] 统计访问每一个页面的用户数量
  • [ ] 页面数据使用Redis做缓存,避免加载可视化数据时都要进行计算的问题

© 2026 GitRepoTrend · NightMarcher/zhihu-crawler · Updated daily from GitHub