使用jieba分词并去除一些无意义的结果后

admin 阅读:223 2024-03-02 21:28:04 评论:0

  懂球帝App是什么?懂球帝是一款提供全球体育足球新闻、深度报道、足球社区的手机App,基本上可以满足球迷在手机上关于足球的一切需求。

  懂球帝App之于足球大概就像虎扑之于篮球吧。

  我爬取了懂球帝App上最近的 99,889 篇post,共有 5,891,037 条评论,而这些评论是来自于 610,803 个用户。

  (本来想着多拿一点用户数据的...结果只有十分之一...)

  这个项目所有的代码都是用 Python 实现。

  代码地址:pengshiqi/Dongqiudi

  为了获取用户ID,我的思路是:先获取近期的文章,然后从文章的评论区中获取评论用户的ID。

  首先,我使用抓包工具 Charles 抓包所需要的各个API:获取 article ID 的 API:http://api.dongqiudi.com/app/tabs/iphone/1.json,这是一页(共20篇)的数据,下一页的API在'next'字段中。获取评论用户的 API:http://api.dongqiudi.com/v2/article/{article_id}/comment?sort=down&version=600,同样地,下一页的API在'next'字段中。获取用户信息的 API:https://api.dongqiudi.com/users/profile/{user_id}。获取球队信息的 API:http://api.dongqiudi.com/catalogs 和 http://api.dongqiudi.com/catalog/channels/{league_id}。

  其中,获取球队信息的API需要登录,具体请求方法为:在网页版懂球帝上登录自己的账号后,获取Cookie,并将这个Cookie放入headers中再请求这两个API。

  爬取数据我使用的是 requests/requests,其中爬取评论区用户ID的时间比较长,而且由于下一页的API是由上一页API返回的,所以只能串行而不能并行。为了稳定性和鲁棒性考虑,还需要有断点继续机制。

  在爬取到60万个用户ID后,使用这些ID来获取各个用户的信息,这个阶段是可以并行的。我有考虑过使用异步爬虫(asyncio 和 aiohttp)来加速,主要参考的是 加速爬虫: 异步加载 Asyncio - 网页爬虫 | 莫烦Python,但后来发现只有60w用户,数据量并不是特别大,就没有这么做。仅仅是将爬虫任务分配到了3台服务器,爬了10个小时就得到了。

  爬取到的所有数据我都存储在本地的 sqlite3 数据库中。

  数据分析阶段,使用 pyecharts/pyecharts 来进行数据可视化,其中的分词部分使用 fxsjy/jieba 来完成。

  下面是数据分析的结果:

  01

  这些用户中,有 263,960 人为男性♂用户,有 18,227 人为女性♀用户,其余 328,609 人没有填写性别信息。

  emmmm,上网搜了下, Bilibili的男女比大概是 5 : 4, 知乎的男女比大概是 2 : 1, 懂球帝这 14.5 : 1 的比例,大概就是继GitHub之后又一个同性交友社区了吧...

  02

  再看看懂球帝们所在的地区,首先是国内的分布情况。

  广东的懂球帝数量最多,其次是北京,再次是山东和江苏。

  然后是海外懂球帝们的分布。

  由于懂球帝App上选择地区时,只能选择图中高亮的地区,所以只比较这些地区的情况。

  这些地区中懂球帝数量最多的是西班牙 ,其次是英国 和美国 。

  03

  懂球帝App中,每个用户可以设置自己最喜爱的球队,然后球队队标会出现在名字旁边,比如这样

  以此为依据,我们来看看哪支球队的球迷数量最多。

  先看看国家队,同样地,这里可以选择的国家队数量也是有限的。

  显然支持国足的朋友还是居多的,其次就是德国 和阿根廷 了,三喵军团 这一届的粉丝不行啊。

  再看看欧洲五大联赛

  英超:

  曼联球迷最多,阿森纳、利物浦、切尔西其次。

  西甲:

  西甲还用看???巴萨皇马占掉了97%...

  德甲:

  德甲也别看了吧...拜仁球迷占了78%,多特占了18%...其余球队xxx...

  意甲:

  尽管尤文图斯刚实现了意甲七连冠,但粉丝最多的依然是AC米兰。

  法甲:

  巴黎圣日耳曼没有什么话要说...

  看了这些,就大概明白了,为什么英超的比赛好看,倒不是说英超球队多么厉害,而是竞争力太大,前四甚至前六的球队的实力都在伯仲之间,乱世英超实至名归。

  看完欧洲五大联赛,那必须得关注一波中国足球超级联赛。

  中超:

  大连的球迷比上港多...上港的球迷比申花多...

  最后,将所有俱乐部的粉丝数量来比较一下。

  下图展示了Top 20的俱乐部,巴萨皇马遥遥领先...

  04

  然后是对用户名字的分析。

  使用jieba分词并去除一些无意义的结果后,得到了下面这个词云。

  大家在起名字的时候还是以'足球'、'梅西'、'巴萨'居多啊。

  '梅西'出现的频率比'C罗'大不少,我觉得这是因为,梅西的粉丝一般就起名'梅西'或者'Messi'了,而C罗的粉丝可能会起名 'C罗'、'克斯斯蒂亚诺 罗纳尔多'、'CR7'...稀释掉了不少。

  我问一个朋友为啥会有'透露'这个词,原来是,'一位不愿透露姓名的xxx' ......

  05

  最后,将各位懂球帝加入App的时间,画成了如下直方图

  可以发现,以2015年中-2017年中加入的懂球帝居多,近一年加入的反而较少,我想大概是新加入的用户们很少评论的缘故吧。

  总结一下,这是我第一次大规模地爬取百万级的数据,懂球帝App没有反爬策略,还是挺轻松的。在这个过程中,抓包手机App的API 和 作图分析数据 挺有意思的,相对比较无聊的是数据的爬取阶段,等待时间比较长,而且可能会出现各种意想不到的情况。

使用jieba分词并去除一些无意义的结果后

使用jieba分词并去除一些无意义的结果后

网址:https://zwxdxcm.com/post/5h3cU5v.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容