某天突然起了兴致,想知道国内每个成员有多少粉,但不知道应该怎么做。各个应援会论坛的用户数多粉也去其它成岩的应援论坛,不靠谱。各个贴吧会员数只能说明某个成员是否出名,并且也有和应援论坛相同的弊端。最好的方法是在一个中立(无成员倾向的)论坛进行统计。于是我想起了AKB48中国官方俱乐部的论坛满足了要求,并且个人信息中自带推し成员的统计。
基本过程
用python脚本抓会员信息的 页,提取 页中的用户信息,包括一推二推成员等,将这些数据保存为文件。
通过用户信息剔除广告用户和不经常登陆的用户。
然后使用pandas库进行统计分析,输出数据,并使用matplotlib绘制图表。
本项目的代码文件可以看 Gist
,也可以下载 这个压缩包
剔除用户数据的方法
通过对用户的 1. 注册时间与最后登录时间之差(a) 2.积分(b) 3.论坛通货 AK币(c) 三个方面对用户进行评分,剔除掉评分少于2的用户数据。
注册时间与最后登录时间之差大于7天,记 a = 1,否则记 a = 0
积分: b = log(积分 + 1) * 0.5
通货: c = log(AK币 + 1) / 20 ) * 0.1
如果用户只有发帖没有回帖 认为是广告帐 直接剔除
推し成员和粉丝性别的数据分析
在最终没有被剔除的12772条用户数据中,性别填写为男性的有2881条,女性的有1181条。取这4062条数据中填写了一推或二推的数据,分别统计每个成员的一推二推男女粉丝数量,以总粉丝数量降序取前20名。最终绘制如下两幅图。
图2 推し成员关于性别的条形图
此外,为了判断出最男生、女生受欢迎的成员,使用如下方法计算成员的性别得分:
1. 先计算全部用户性别比例 R
R = 男用户数/女用户数
2. 分别计算各个成员的等效男女粉丝数。
等效男粉丝数 = 一推男性数 + 二推男性数 * 0.5 记为 f
等效女粉丝数 = 一推女性数 + 二推女性数 * 0.5 记为 m
3. 计算各个成员的等效粉丝性别比例。
r = f / m
4. 计算性别得分。
s = r / R
如果 s < 1 性别得分 = – (1 / s – 1) 否则 性别得分 = s – 1
这样得出的性别得分既消除了成员总粉丝数的影响,又消除了本身用户数据中男女数量不同的影响,并且函数上是一个对称的。
得出的结果:
男生更加喜欢的成员 佐藤亜美菜、 横山由依、 指原莉乃、柏木由紀、河西智美
女生更加喜欢的成员 宮澤佐江、高橋みなみ、松井珠理奈、大島優子、小嶋陽菜、前田敦子
推し成员和粉丝年龄的数据分析
在最终没有被剔除的12772条用户数据中,填写了生日的有3534条。将用户年龄分为 ~18 19~22 22~26 26~ 四段,其分布如下:
~18 532 人
19~22 1322 人
22~26 1187 人
26~ 493 人
图4 推し成员关于年龄的条形图
经验总结
最好还是将抓下来的 页保存为文件,这样抓完之后即使有什么想要的其他信息可以直接从文件中提取。
有可能会因为 络问题导致 页无法抓取,因此最好要有重试逻辑。
剔除用户的时候,很靠谱的一个方法是使用用户组。但是这次因为抓数据的时候没有抓这个字段,就比较坑了。
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫urllib208564 人正在系统学习中 相关资源:丝柏人像美肤处理软件CPAC Imaging Pro 3绿化汉化破解版
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!