用Python进行网络爬虫和数据分析的初次尝试(一)
来源:互联网 发布:bloom filter python 编辑:程序博客网 时间:2024/04/30 07:32
某天突然起了兴致,想知道国内每个成员有多少粉,但不知道应该怎么做。各个应援会论坛的用户数?很多粉也去其它成岩的应援论坛,不靠谱。各个贴吧会员数?这只能说明某个成员是否出名,并且也有和应援论坛相同的弊端。最好的方法是在一个中立(无成员倾向的)论坛进行统计。于是我想起了AKB48中国官方俱乐部的论坛满足了要求,并且个人信息中自带推し成员的统计。
基本过程
- 用python脚本抓会员信息的网页,提取网页中的用户信息,包括一推二推成员等,将这些数据保存为文件。
- 通过用户信息剔除广告用户和不经常登陆的用户。
- 然后使用pandas库进行统计分析,输出数据,并使用matplotlib绘制图表。
剔除用户数据的方法
通过对用户的 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名。最终绘制如下两幅图。
此外,为了判断出最男生、女生受欢迎的成员,使用如下方法计算成员的性别得分:
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 人
分别统计每个成员每个年龄段的一推二推粉丝数量,以总粉丝数量降序取前20名,最终绘制如下图。
图4 推し成员关于年龄的条形图
经验总结
- 最好还是将抓下来的网页保存为文件,这样抓完之后即使有什么想要的其他信息可以直接从文件中提取。
- 有可能会因为网络问题导致网页无法抓取,因此最好要有重试逻辑。
- 剔除用户的时候,很靠谱的一个方法是使用用户组。但是这次因为抓数据的时候没有抓这个字段,就比较坑了。
- 用Python进行网络爬虫和数据分析的初次尝试(一)
- Python基础和网络爬虫数据分析
- 《网络爬虫-Python和数据分析》数据库建库建表问题
- 网络爬虫,python和数据分析学习--part1
- 网络爬虫,python和数据分析学习--part2
- 网络爬虫,python和数据分析学习--part3
- 【网络爬虫】【python】网络爬虫(一):python爬虫概述
- 利用Python进行数据分析(一)
- Python网络爬虫(一)-----获取网页数据
- python网络爬虫(一)
- python网络爬虫(一)
- python网络爬虫(一)
- 【ML项目】基于网络爬虫和数据挖掘算法的web招聘数据分析(一)——数据获取与处理
- Python爬虫(一)--城市公交网络站点数据的爬取
- 学习Kotlin 初次尝试(一)
- Python网络爬虫和信息提取(一)
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- Hello world
- C# 使用zedgraph绘制 柱状图
- elasticsearch 查看集群统计信息
- Python Split函数的用法总结
- C#中的全局变量
- 用Python进行网络爬虫和数据分析的初次尝试(一)
- Android深入探究-- 实现即时拍照并上传
- 缴费金额按年排列
- 记录一个统计MSSQL TABLE资料量的sp
- 微信公共服务平台开发(.Net 的实现)
- cocos2dx 对全部动作或单个动作速度的改变
- js动态字符串拼接案例
- 百度地图多条线段绘制的方法
- Qt5.3 For Andoid 安装过程