• 为了更好的吃这个瓜,我去拉了一下评论,吵起来了,太有意思了。


    你好呀,我是歪歪。

    周末的时候吃了一个瓜,真的是太好吃了。

    虽然 2022 年都还没过半,但是我个人已经把这个瓜评选为年度前三了。很久没有吃过这么有质量,又让我酣畅淋漓的瓜了。

    事情这样的,我在知乎上刷到了这样的问题:

    按理来说,我是一个数学渣的,这种关于数学的问题我一般都不是很感兴趣。我甚至都不记得我高考的时候数学考了多少分了。

    但是,我还是鬼使神差的点了进去。

    没想到,这一点进去,我就陷进去了。

    题目大概是说 B 站上有个 up 主说自己高考数学的时候差不多 35 分钟就把题做完了,最后考了 149 分。

    这个 up 主其实挺好的,我还专门去看了一下他之前的视频,他今年一月份发的视频里面说自己是在美国攻读博士学位,学的是纯数学专业。

    然后他的高考数学分数没有问题,因为他后面晒了自己的成绩单,但是由于没有可以佐证的证据, 35 分钟这个时间特别有争议了。

    大家围绕着这个时间就开始吵起来了。

    一拨人说应该问题不大,一拨人说绝无可能。

    于是就出现了下面这样的一个回答,我先给你全文截个图:

    https://www.zhihu.com/question/522084520/answer/2394053852

    总体意思就是有个不愿意透露姓名的、参加过数学奥林匹克大赛的数学大佬,他说他觉得没有人可以在 35 分钟之内高考数学拿到 149 分。

    他还立下了奖金 100w 的战书:

    在 2022 年 6 月 7 日中午 12 点集合,等当天试卷出来之后全网直播,40 分钟之内 145 分以上即可,参赛费 1 万,挑战成功奖金 100 万。

    他也知道知乎上能人辈出,所以特别欢迎大家来打他的脸。希望大家帮他扩散这个消息,让更多的人看到,如果能凑够十个人就开搞。

    此消息一处,各路吃瓜豪杰闻风赶到。我给你看看这个回答的数据:

    3.3w 人点赞,6805 条评论,5736 人追更,1.7w 人收藏,很恐怖的数据了。

    因为答主最后一次更新在 3 月 20 号。至今已经过去了 2 个多月了,我当然第一时间是想知道截止现在有多少人报名了。

    所以我想在评论区里面找到答主关于这方面问题的回复。

    但是 6800 多条评论,这么多评论直接影响到我吃瓜的速度了。知乎网页版上分页就分了 121 页,而且里面还夹杂着特别多的“查看回复”:

    “查看回复”,就是下面这种楼中楼的情况:

    我翻了几页,我就发现事情不对,这瓜虽然好吃,但是一页页的翻的话,吃起来也太费劲了。

    你知道,我是程序员嘛。

    所以...

    扒评论

    知乎的评论我看了一下,特别的好扒,结构也不算复杂。

    从开发者工具中看到的接口和响应是这样的:

    你看它的这个接口,里面有个 limit=20&offset=0,猜也能猜出来,limit=20 的意思是一页显示 20 条,然后 offset=0 说明它是基于偏移量来做的分页。

    然后返回的数据中有一个 paging 的属性。

    很重要,所以我把这个属性单独拿出来说:

    前两个属性不多说了,分别用来标识当前是否第一页和最后一页。

    接着有个 next 和 previous,表示上一页和下一页。你注意看这两个属性唯一的差别就在 offset 上,一个是 0,一个是 20,也就是说一页显示 20 个。

    totals 代表有 2417 条数据。一页 20 个,所以一共 121 页。

    那么问题就来了,明明前面说了 6805 条评论,这里怎么只有 2417 条呢?

    这个差距也太大了吧?

    是的,我开始也有这个疑问,于是我随便找了一个"查看回复"点了一下:

    在开发者工具里面看到了这样的请求和响应:

    看到接口名称的时候,我一瞬间都懂了。

    前面的 2417 条,是 root_comments。每个 root_comments 下面会挂很多 child_comments。

    拿个实际的数据来说,就是这个意思:

    所以我的策略是先把 root_comments 都拿下来。

    我想要拿到的数据应该是谁评论了什么内容,这个内容有多少人点赞,对应的数据是这样的:

    所以这个程序写起来很简单,就这么几行代码:

    从输出的结果来看,是没有毛病的:

    但是我发现一个神奇的事情是这样的:

    当我获取到 offset=420 的时候,只给我返回了两条数据再然后就全是空了:

    一直到 offset=2420 ,也就是最后一页,都是空的:

    我不理解,但是我也找不到为什么,猜测应该是触发到了他们的某个限制策略了吧。

    我前面不是说了知乎是根据偏移量分页的嘛,很有可能的一个逻辑就是当 offset 大于某个值的时候,系统认为这个值不合理,觉得你有可能是在刷数据,那么我就不给你数据了。

    我想找找其他的帖子来论证我的观点,但是一时间竟然没有找到一个回答下面有超过 5000 个评论的帖子,所以这条路没有走通。但是也侧面证明了,这确实是一个神贴,在整个知乎都属于少部分的情况,出点奇奇怪怪的异常也是很正常的嘛。

    但是我发现了另外一个问题,其他评论不多的帖子,比如我之前写的一篇关于成都的,只有 722 个评论。

    当我点击评论的时候是这样的:

    弹窗加上下拉瀑布流的形式进行的展示,和手机上的展示类似。根本就看不到什么分页信息,这才是偏移量分页的正确打开方式。

    因为可以带着上一次返回的数据的最大 id 去做 limit 查询,这也是大数据量的情况下,一个非常好的分页手段。

    具体好处就不展开了,老八股文了,说多了没意思。这是只是一个应用场景而已。

    回到我们的神贴中,前面我说了它下面是有分页的,但是通过接口访问到 offset=440 的时候,只展示了两条数据之后,就没有数据了。

    也就是说接口最多只返回 442 条 root_comments 类型的数据。442,一页 20 条,一共 23 页。

    所以我只需要在评论页上点击到 23 页,就能证明我的观点。

    首先我直接点击最后一页的时候,是一片空白,和我们程序表现一致:

    然后,我就从第一页开始,一页页的点,点到 23 页的时候,果然是符合我的猜测的:

    虽然后面还有接近 100 页,但是全是空白页,这应该是知乎的一个 BUG 吧?

    算了,不深究。

    先能拿多少数据就拿多少数据,牢记使命,吃瓜的时候要跟着主线走,先把主线剧情打通关。

    千万不要因为走的太远,而忘记自己吃瓜的初衷。

    现在的主线就是 root_comments。

    而我已经把 root_comments 的数据拿到了,还要获取对应的 child_comments 怎么搞呢?

    还是得找到对应的接口才行。

    当点击评论下面的“查看回复”时,接口是这样的:

    其中有一串神秘的数字,10093095452,这是什么玩意?

    我也不知道,但是我知道这是一种 restful 风格的请求,所以这个数字,是一个入参。

    既然是获取 root_comments 下的 child_comments,这个入参一定和 root_comments 有关。

    于是我拿着这串数字直接去搜索了获取 root_comments 时的第一页返回数据:

    你看我标注了五角星的地方,原来这串神秘数字,就是每个 root_comments 的 id 呀。

    而且还有一个意外收获,我发现返回的数据结构里面有个 child_comment_count 属性,这个数据就是代表这个 root_comments 下面有多少个评论。

    所以,我在解析 root_comments 的时候,只需要判断一下对应的 child_comment_count 属性是否为 0。不为 0,则说明是有回复的,按照前面说的 restful 的方式获取数据即可。

    也就是在程序中加入这样的逻辑:

    而 handleChildComment 的关键其实就是拿到这个 url,后面的代码就和解析 root_comments 基本一致:

    把代码跑起来,控制台日志打印的哗哗的:

    检查了一下,看起来没有毛病。

    接下来就更简单了,把数据搞到数据库里面去就完事了。

    最后一共拉取到了 4267 条数据:

    距离 6800 条评论还差一点,原因前面说了,当 offset 大于某个值的时候,接口就没有返回数据了。

    这不重要,反正大部分数据都拿到了。

    接下来就是安心吃瓜了。

    开始吃瓜

    因为我最关心的是答主说了些什么事情。

    所以我首先过滤了一下 cna777 这个答主的所有回复:

    这个吃瓜的姿势就很舒服了。

    从答主的回答来看,好像截至 5 月 26 号,只有三个人报名,如果到 6.1 还没有 10 个人的话,可能今年就不会组织了。

    果然是吃瓜的人很多,但是都真的只是吃瓜而已。

    其中我还看到答主有这样的一个评论,有点意思,我当然要看看上下文是什么了。

    前面扒评论的时候我说了,我把 root_comments 的 id 存下来了,所有只需要过滤指定的 id,就能找到上下文:

    原来是有人质疑答主是否有这么多钱。这个没啥意思,但是我惊讶的发现这个 root_comments 的 id 下面居然有 197 条评论。

    是一个非常有争议性的评论,所以我看了一下评论的内容:

    然后找到了对应的页面上的评论,把这 197 条评论全部看完了:

    总结起来就是说这个叫做 kiki 的同学,说他是高中数学老师,他觉得这个挑战可以完成,但是不知道为什么,即使非常多的吃瓜群众叫他展现一波实力,他也一直顾左右而言它,并不正面应战。

    主要是质疑答主是否能拿出这 100w,这个质疑也在其他的评论中出现过。

    但是我就奇怪了,要是真的有实力就直接去报名啊。主要是现在报名的人都没有 10 个,大家就开始怀疑答主能否拿出 100w。然后借题发挥,输出自已的各种观点。

    这个逻辑的先后顺序也不对的嘛,答主不是多次说了嘛,等报名人够 10 人了,他会去gz处进行公正的嘛。

    接着我想看看哪个评论的话题性是最大的,也就是 root_comments 的 child_comment_count 数是最大的。

    我截取了排名前十的数据:

    第一位是一名叫做“无亡”的用户,他说:

    我要挑战 天津考生 天津卷常年 40 分钟以内写完 很多次 150

    然后下面有 610 个回复:

    从评论上看这个哥们好像确实报名了,也是第二个报名的。

    瞬间觉得这真的是个人才啊,于是想去他的主页看看这是何方神圣。

    结果...

    这是牛逼吹的太大,兜不住了,自己就销号了?

    这里答主说的“退乎”的人,应该就是这个“无亡”同学吧:

    所以,这个故事告诉我们什么?

    口嗨一时爽,装逼要谨慎。

    回复第二多的是这个:

    很多吃瓜群众都愿意对这个比赛进行众筹,我粗略的算了一下,好像大家的钱加起来,距离 100w 也不算特别远了。

    说真的,要是这个活动办起来,我也愿意花钱买个门票,看看应战的人到底是何方神圣。

    翻了很多评论,反正就是有几个人装逼说问题不大,但是一叫报名就各种各样的借口。

    然后我换了一个视角,按照评论点赞数最高进行排序:

    前 10 前面,我最喜欢的是这个评论:

    真的是这样的,只要在任何的社交平台里面讨论到跑步相关的话题,总是有人冒出几个特别的离谱的成绩,吹的是有板有眼的。

    但是真的要说在线下来对线,真刀真枪的干一场,马上各种各样的理由就来了,反正就是不承认自己在吹牛逼。

    包括这个评论下面也是,大家又开始关于跑步成绩吵起来了。

    用我们程序员的话说就是:no bb,show me code.

    还在评论里面发现了一个角度刁钻的哥们:

    他居然想组局对赌,真的是处处是人才啊。

    我还发现了特别多的评论是"cy",我也不懂是啥意思。就搜了一下,原来是“插眼”的意思。

    要说插眼,我就懂了。我盲僧插眼贼溜。

    有 10 分之一的评论都是 cy:

    评论区还有特别多的瓜可以吃,但是我就不一一列举了。

    我接着就去了 B 站,我看到了两个相关的视频。

    第一个是这个:

    https://www.bilibili.com/video/BV1Va411t7CV/?spm_id_from=333.788.recommend_more_video.2

    这个 up 主的自我介绍是这样的:

    我高考数学 148 分,考入清华基课班竞赛业余选手,教了 12 年数学。但是做题巅峰事情的我应该也做不到,但是我联系报名了大众组,重在参与。

    这哥们,一看就是实在人,实力在线,但是不轻易装逼,报个大众组,赚个噱头,稳得一笔。

    这个视频下面有个评论是把我看笑了:

    我也来装一个,本人高考728分,现在在麻省理工数学系读博,本科期间总共发表了接近500篇sci,研一的时候读到过哥德巴赫猜想,花了我两天才解决掉,也因此获得过菲尔兹奖,我想说,高考我50分钟做完数学满分,但这也算我的极限了,因为我是看到题目就想到答案,再加上写的时间,如果写的再快点最少也要40几分钟吧,40分钟以内根本不可能。装完了,爽!

    很好的讽刺了这个话题下面的一些“装逼犯”。

    而我想说的是:兄弟,别光喝酒,吃几颗花生米啊,边吃边说。

    第二个视频是这个:

    https://www.bilibili.com/video/BV1sP4y1M7K4/?spm_id_from=333.788.recommend_more_video.-1

    这个大佬给出的结论是有可能。因为考试之前是可以提前十分钟拿到试卷,但是不能动笔的。

    我依稀记得好像确实是先拿到了试卷,但是不能动笔。至于是提前多久那就不记得了。

    大佬说,有这十分钟,完全可以通过口算,把选择题和填空题做完。

    是的,没听错,可以通过口算,秒杀高考数学绝大部分的选择题和填空题:

    听的我一愣一愣的:这特么还是人吗?

    这瓜越往后面吃,我越觉得人和人之间的参差是巨大的。在这些学神面前,我都不好意思说自己是学渣。

    在我吃完瓜,写完文章之后,我发现答主更新了:

    太遗憾了,居然没有把局组起来。到最后,还是只有三个人报名了。

    但是答主表示明年还能再来,只要凑够十人我们随时可以开始。

    那么,这个叫做“李笑”的、不在国内无法参赛的、看起来很厉害的用户,不知道到时候会不会迎战:

    我相信你是个大佬,只不过你拿学历说事儿的样子,真的 low。

    另外,我是真的想这个活动举办起来,有主办方,有赞助商的那种,然后全平台直播。

    对了一定要有解说,不然我是真的看不懂。

    虽然这些题我是不会了,但是吃瓜,我一定站在最前线。

  • 相关阅读:
    Javascript Promise技术
    什么是CPS
    移动端input file 提示没有应用可执行此操作
    黄聪:wordpress+Windows下安装Memcached服务及安装PHP的Memcached扩展
    黄聪:Windows下安装Memcached服务及安装PHP的Memcached扩展
    用VScode配置Python开发环境
    在VSCode中使用码云(Gitee)进行代码管理
    网页链接分享到微信朋友圈带图标和摘要的完美解决方法
    解决百度统计被刷广告的办法,屏蔽非法广告
    Visual Studio代码PHP Intelephense继续显示不必要的错误
  • 原文地址:https://www.cnblogs.com/thisiswhy/p/16326297.html
Copyright © 2020-2023  润新知