题图:Photo by Ian Simmonds on Unsplash
标题叫“用Python批改知识星球作业”,感觉太标题党了,所以换了个词,不过等AI更强大点是有可能做到的。咱们知识星球,每周都要统计大家的作业完成情况与打卡次数,因为知识星球没有给星主提供运营统计数据,所以,我只能自己动手解决,特别推荐产品和运营人员学点编程,懂点爬虫,因为互联网人都是靠数据说话的。
思路分析和撸代码总共花了1个小时,但是写这篇文章却花了我4个小时。现在知道程序员为什么宁可多写几行代码也不愿意写文档了吧。写文章真不容易,听说公众号的赞赏功能又回来了,以后又有动力更新文章了。
我们的目标是统计出最近一周在星球里的打卡与作业完成情况,所以我们先要想办法拿到数据,再对数据进行统计分析。因为知识星球提供了 PC 浏览器版本,数据的抓取我们直接从 Chrome 浏览器找入口。
第一步:思路分析
爬虫获取数据就是利用程序模拟浏览器发起网络请求,将数据采集回来,所以,我们先来分析网络请求在浏览器里面是怎样的。微信扫描登录知识星球 https://wx.zsxq.com/dweb/ 后, 浏览器右键「检查」,打开开发者模式选择 「Network」就可以看到浏览器发出的每个网络请求,选择你要进行统计的圈子,你会看到有很多请求。
这些请求全部是和该圈子相关的,在这个阶段首先你要对整个往页的数据有个大概了解,比如在该页面提供的功能有圈子的基本介绍、星主的基本信息、中间是帖子列表,左侧是圈子列表,此时你需要根据每个请求的返回结果做出判断
groups 请求的数据对应页面左边的圈子列表。
topics?count=20 正是我们要找的帖子数据的请求接口
找到了获取数据的请求接口后,我们先来对返回的数据结构了解一下
{
"topic_id": 48551524482128,
"group": {
"group_id": 518855855524,
"name": "Python之禅和朋友们"
},
"type":