河南考生中考移民大庆大家究竟在吵什么?我爬取了两万五千条抖音评论和近6年分数线并进行了数据分析
所涉及到的知识点
爬虫
爬虫基础
- requests库的基本使用
- pyquery库的基本使用
js逆向
js补环境(VMP还原)
execjs的使用
数据分析
pandas的使用
numpy的使用
matplotlib的使用
- 绘制组合条形图
- 绘制词云图
- 绘制折线图
- 绘制柱状图
存储数据
- pymysql的基本使用
- pymongo的基本使用
- 存储到csv文件
小知识
- 复制请求的bash命令快速生成py代码
- 快速编写windows脚本(以mongodb启动脚本为例)
数据爬取
数据来源:
爬取分数线相关数据
这个就是简单的爬取数据,点开这个网站,直接F12抓包。网站是用jquery
写的,也没有异步加载,直接往一个页面上发送请求即可拿到返回的html页面。
在返回的html结构中就可以使用pyquery
,xpath
这种库来提取需要的数据了。
爬取评论数据
抖音这个网站当时也是研究了一天,也结合了网上的一些教程,比如K哥的手撸X-Bogus加密,最后成功的逆向出来了,本来想着还能搞个几k呢,谁想到老板跑路了。其实你只要拿着这个X-Bogus加密,就能拿到抖音很多东西了,比如用户资料
,用户视频信息
,评论
什么的,一些自动化的还需要bd-ticket-guard-client-data
。
X-Bogus逆向:
这里我采用的是补环境,顾名思义,就是补一下js代码运行所需要的环境。找到加密入口,通过一些断点调试的方式找到加密的参数,把所有代码整个给扣下来,然后在python里面调用js代码,传递需要加密的参数,让js把加密后的数据给你返回即可。
可以参考这个教程:https://www.bilibili.com/video/BV1nw411t7dq/ ,两个小时讲的很适合小白,有基础的可以跳着看
剩下的参数
对于剩下的参数,如果你需要自动化数据采集,比如根据关键字搜索后自动把这个关键字下面视频的所有评论都给采集出来,你可能还需要使用正则把aweme_id
这种参数给逆向出来(一般是通过正则提取)。
但是我们这里就采集5条视频的两万五千条评论,我就手动赋值了,只需要修改分页查询的两个参数就可以愉快的进行爬取了。
写在后面
本次我爬取的时候前前后后爬取了10万条评论,抖音没有进行风控,如果爬取的多了,比如几十万条几百万条,可能需要多个账号进行爬取。因为这里是学习目的,就不深入介绍了。
数据分析结果
参考的文章:
- 为什么云南教育那么落后一本线却那么高 尤其是文科一本线达到560为全国第一? - 知乎 (zhihu.com)
- 为什么没人说江西高考生难呢? - 知乎 (zhihu.com)
- 2021高考共几套试卷,各省使用什么卷? - 知乎 (zhihu.com)
- 2018年高考试卷使用版本划定 哪些省市使用全国卷_高考_新东方在线 (koolearn.com)
如何进行数据分析
很多同学拿到数据不知道怎么进行分析,我能给的建议是首先看你需要什么,第二看你拿到的数据能给你什么。分析的自由度是很大的,画什么图,用什么数据都是你自己决定的,多看看别人是怎么进行数据分析的。拿现在我们分析的举例子:
对分数线的分析:我只是分析了一二本的前4名和后4名。扩展的是不是还有新高考省份的分数线?京津沪的分数线。
对评论的分析:是不是可以对评论的人进行分类,看一下评论的性别分布和年龄分布。在B站的话可能还有等级分布
分数线分析
一图胜千言,首先是每个省份的可视化分析。
这里我的分析思路是这样的,我们之前拿到了每个省份近6年的分数线数据。这些数据并不符合严格的规律,分析自由度大了很多,当然提取数据的难度也大了很多。我分析的目的只是简单看一下各个省份分数线的分布,咱也不是专业人士,对于什么艺术类
、特招
、自主招生
、新高考
这些也并没有深入的了解,就不在这里班门弄斧了,就简单分析一下对于2023年还在使用一本二本这些传统高考录取的省份进行一个分析。
根据文理科和一二本进行分类,一共有4种组合,对每种组合分别分析平均分数线最高的4个省份和平均分数线最低的4个省份进行绘制折线图。
QA:
Q: 为什么我使用平均分数线来对省份进行排序?
A:选择的原因
- 使用平均分数线分析起来相对简单,同时比单个年份的排序更有说服力
- 一般一个省份分数线高就会一直高下去,基本不会出现飞上枝头变凤凰这种情况,每年的差距应该不算很大。
Q:每个省份不是对应有特定的I,II,III卷吗,这个可以忽略吗?
A:显然是不建议忽略的。但是仍然忽略的原因如下
- 这里因为数据量较少(经过一二本的过滤只剩下了16个省份),如果再强行进行分类,可能会出现数据对照组较少难以解释的问题。
- 选择II和III的省份近几年分数也相对比较低,跟卷I的省份比较也不会太大的影响分析结果。
明确一点,分数线高低并不直接代表高考的难易程度,任何事情都是相对的。
举个例子:竞争压力大的省份过一本线70分可以上双一流,竞争压力小的省份过一本线30分可以上双一流。其中省内大学和省外大学又有差距。同时每个省份的评分标准也不尽相同
参与统计的省份(共16个):
南方:江西、安徽、广西、四川、云南、贵州
北方:河南、山西、内蒙古、陕西,甘肃,宁夏,青海,新疆、吉林、黑龙江
分数线排名
- 排名前4的分别是四川、云南、江西、河南
- 排名后4的有宁夏、黑龙江、新疆、青海
2020年前的I卷和III卷难度差距较大,20年以后全国三张卷子更改成甲卷和乙卷,难度接近了。
排名前四的分析:
- 四川和云南使用三卷,分数高一点也正常,但是这么高的分数也足以看出他们的实力了。
- 江西确实是直接一提的,同属一卷的情况下,分数线在20年之前遥遥领先河南,20年之后也是跟河南差不多的。
- 从分数线看的话,河南的高考难度还好,并没有遥遥领先,可能是人多而高校招生人数是固定的,导致高校分数线在本省上浮从而上学难。
排名后四的分析:
- 从20年4个省份分数线开始极速暴跌,尤其是在2021年,新疆的一本分数线是405,与分数线最高的省份四川差了116分。可能是因为改用了全国卷的原因,在21年之前,新疆、宁夏、黑龙江使用卷III,由于教育改革,这三个省份开始使用全国乙卷(即与江西、安徽、河南等共用一套卷子)。
下面这几个图就不一一分析了:
两省对比
我们是来探究河南移民大庆,我这里就把这两个省份简单抽出来做了一些比较。下面直接上图:
还是只分析理科的。
- 在2021年(不含2021年)之前,由于两个省份卷子不同,所以其实可以看出河南并没有比黑龙江高出多少分,最高的一次在2020年,理科一本线高出了89分,理科二本线高出了117分。(这次可能是因为疫情原因)
- 2021年以后,由于卷子统一,分数差距逐渐拉开,甚至在2023年,河南本科二批分数线高于黑龙江本科一批分数线1分,本科一批分数线高出黑龙江106分。本科二批分数线高出黑龙江122分。
文科的也是一样,就不再赘述了
抖音评论分析
对评论来说,需要用到NLP技术,或者LDA分类。我对这方面的理解也仅限于调用一个别人的模型,可是这个评论属实有点......,别说模型了,连我有的都看不懂,要是手动打标记用一些机器学习模型再训练的话实在太浪费时间了。
所以我就想着调用一下GPT4的接口,让他帮我进行归类,我的prompt写的感觉够详细了,还是不太行,有的完全看不出来评论是冷嘲热讽的,如果每个评论调用一次接口,它的识别成功率可以达到60%-70%左右。但是如果每次评论我都调用一下接口,我的wallet也扛不住啊,因此就用模式匹配简单分析一下就可以了
可以看一下我的prompt:
我下面会给你一份csv文件,这个文件的text列是你所要分析的抖音评论
视频评论背景:
这个事件发生在最近,就在中国,中国的教育地域分布是非常不均的,教育公平是很多人都想达到的目标。其中河南高考的难度在中国是非常大的,而黑龙江却并没有那么大。这次事件的原委是有大量河南的家长把学生户籍迁移到黑龙江省大庆市,被大庆市的家长举报,认为侵犯了他们孩子的利益。这个事情在中国的抖音(国外的tiktok)平台引发了激烈的讨论。
给你的输入:
如前所述,这个输入的格式是一个csv文件。text列是我爬取的评论
你需要做的:
你需要识别不同评论的【深层】语义并把他们进行分类(需要结合视频评论的【特征】、【背景】、【以及隐含的含义】,来识别他们这个评论的含义)。分类的特征有12个:
1:支持河南考生移民
2:认为不能抢占黑龙江考生名额
3:认为河南高考分数太高
4:认为教育不平等,支持全国统一分数线
5:认为复读生太多
6: 认为河南好大学少
7:认为两者教育资源有差距,
8:认为河南生的多
9:攻击河南人
10: 谈到了西安
11:认为有人搞阴谋论,抹黑黑龙江和河南
12: 其他原因
分类的要求如下:根据你自己的模型训练集和上面的要求【精确】识别这些评论,你需要在上面11个选项中选择一个评论最可能的分类,(请注意,如果你实在无法识别评论的倾向,请把他们归类于其他原因)
补充说明:
不要简单的使用关键词匹配,你需要根据你的理解(即你的训练集)对每一个评论进行精确的分类。
在分类完成后,如果你可以返回csv文件,请提供一个csv文件,如果你不能返回文件,请严格按照下面的格式返回数据:
cid,type
7323084537058886452,1
7323084537058886453,6
地域分析
可以看到来自河南的网民对这件事关注度最高,比例为35.1%,第二名就是山东,山河四省的核心成员,第三是陕西,我猜测是因为去年的西安事件,第四是黑龙江,河南—>黑龙江的,第五是江苏,这个应该是经济发达并且高考也不简单,所以应该也有关注度,第六个是河北,也是山河四省的核心成员。
话说 为啥山河四省的山西老铁没上榜,一家人没整整齐齐啊😂
评论时间分析
2024-1-12号曝出来的,有80%(19804条)评论都是在当天评论的,2024-1-14号大家都不太关注了,仅仅3%不到,只有800个评论,热度还是蹭慢了🙁
词云图分析
下面的词云图我做了一些过滤,把河南,黑龙江还有单字的这些给过滤出去了。下面简单看几个词分析一下。
公平、高考、分数线。这两个词应该是在强调教育不公平,高考难
孩子。父母之爱子,则为之计深远。这种意思
全国统一。应该是在呼吁全国统一考卷
山河四省。源自今年出圈的一个梗,在这次也有强调,应该也是在说山河四省高考难
向阳而生。一句话:
如果阳光不能均匀的撒在大地上,就不要责怪他们选择向阳而生!
西安。应该是去年移民西安的事情
为什么、河南人、他们。这些词汇应该是在攻击河南人,比如这个评论:
这些人难道不是想享受好的教育资源后,去其他弱省钻空子吗,这么多年,怎么不见江苏,浙江这些教育强省的这种新闻,反倒是你们,去完西安,现在又去大庆。你们如果去江苏,浙江,山东,河北。我觉得还真没多少人这么说河南人[尬笑][尬笑][尬笑][尬笑]
归类分析
由于是经过模式匹配,自己添加正则,肯定有疏漏地方,一个匹配出来了2000个左右,10%, 这个参考价值并不是很大,但是也是有参考价值的。这里我们不谈比例,只谈多少人。上面的分类在prompt里面,
10对应的是谈到了西安
4对应的是认为教育不平等,支持全国统一分数线,统一试卷
7对应的是教育资源差距
5对应的是认为复读生太多
8对应的是认为河南生的多,人多
可以看到,谈到西安的评论占到了800个左右,大概是评论数的4%。统一分数线有600个评论提及,认为教育资源有差距的有500个评论,认为河南复读生多的有200个,认为河南人多的有190个。
根据上面的分析结果可以稍微得出一点结论:
- 大家关注去年移民西安的事情
- 支持全国统一分数线、统一试卷
- 认为教育资源差距大
写在后面
今年哈尔滨爆火其实也让大家更了解了黑龙江。作为一个在黑龙江读了几年书的河南人,还是挺建议来这里的。原因
- 反卷圣地,分数线上面也分析了,老师大部分很佛系,不会出现
不学习先死爹后死妈
的tagline。 - 平常气候也非常宜人,冬暖(有暖气)夏凉很舒服
- 至于景点和底蕴就不用我介绍了,抖音视频已经满天飞了。
- 这里的人也很不错(不包括中介😡 )
说回正题,调查结果出来了,好像是300多个人有100多人是河南的。
但是像这种中高考移民确实是不应该赞同的,首先,并不是鼓励大家仇富,这种能出来的要么家里有关系,要么家里有money,这不仅对黑龙江不公平,对河南考生不也相对不公平(短期大家可能觉得少了一个竞争对手)。但是你跑出来了那别人跑不跑呢?河南的跑了河北、山东的跑不跑呢?你出2w能跑别人是不是要出3w?大庆不让了是不是要去哈尔滨?哈尔滨不让了是不是要去齐齐哈尔?黑龙江不让了是不是要去青海🤔。归根结底还是不能说的问题
打个比喻,上游水闸开了,一直在下游建坝能解决问题吗?大家心知肚明。现在的问题是怎么关?或者怎么关小一点,这就轮到专家发力了。
并且也是真的对黑龙江考生不公平的,你在河南上学跑来黑龙江考试。举个栗子:河南考生5点起床9点放学卷16个小时,别人7点起床6点放学,你一天比本地考生多学5、6个小时,考试相对而言肯定不公平了。我一直认为中高考这种时间上的内卷是没有意义的,有那个时间多看看外面的世界,多去培养一些自己的兴趣爱好,不比你做100遍1+1强吗,但是这种机械劳动却被许多人奉为圭臬。
这个东西也是不可能有解,只要制度不改,那些高考大省是没有学校会去推崇素质教育的。
希望大家积极向上,怨天尤人没有用,还是努力提升自己。
世界上只有一种真正的英雄主义,那就是在认清生活的真相以后依然热爱生活。