Bilibili (B站)200万用户数据爬取与分析(附源码)
时间:2022-05-04
本文章向大家介绍Bilibili (B站)200万用户数据爬取与分析(附源码),主要内容包括文件介绍、性别、年龄、地区、注册时间、活跃度统计、粉丝统计、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
该爬虫仅供学习使用
- B站用户爬虫
- B站视频爬虫
- B站弹幕下载器
文件介绍
-
bilibili_user.py
:爬虫文件 -
bilibili_user_info.sql
:数据库文件 -
get_face.py
:用户头像下载器
基本概况
- 总数据数:20119918
- 抓取用户的顺序为其注册时间顺序:2009-06-24 14:06:54 至 2016-02-18 21:04:52
- 预估遗漏数据:不超过 2%
- 抓取字段:用户 id,昵称,性别,头像,等级,经验值,粉丝数,生日,地址,注册时间,签名,等级与经验值等。
性别
- 有效数据:14643019
- 保密:11621898
- 男:1674196
- 女:1346925
这个男女比例是有点出乎个人预料的,接近 1:1。其实之前初步抓了 2013 年暑假之前的数据,男女比例当时还在 3:1 这样。
可见明确性别的群体还是比较少的,只占了总数据的 15% 左右。
更多的分析日后再做。
年龄
- 统计范围:1970-2010(1980 年除外)
- 总数据:3800767
具体数据不放了,简单看一下统计结果吧。
主要用户分布在 93-00 年的用户(大概 16-23 周岁),其中 97 年(19 岁)用户占了绝对的主导地位。
事实证明,B 站小学生并不多,而是高中生、大学生比较多。
90 后用户占主体,但是用户年龄段正在不断后移。毕竟,是一个年轻人的网站。
地区
- 分析范围:国内 34 个省市及地区。
- 有效数据:863541
主要用户分布在:广东、江苏、北京、上海、浙江等地区。都是一些经济很发达的沿海地区。
注册时间
- 统计时间:2009-06-24 14:06:54 至 2016-02-18 21:04:52
- 总数据:20119823
由于 16 年才过去 2 个多月,所以少一点,不过可以预见其发展必将远超 2015 年。自 2009 年开站以来,每年用户几乎都是以指数级增长。
活跃度统计
- 等级范围:0 – 6
- 总数据:20119918
- 截止时间:2016-02-18
由于 B 站有经验等级规则,用户的活跃度可以依据等级判断。
等级为 0,就是只注册未登陆过的用户。等级为 1 或 2,为非活跃用户。等级为 3 以上,就是活跃用户。其中等级为 5 或 6 的,为投稿数特别特别多、视频特别火爆的用户,为 B 站的主干用户(约 5000 人)。
关于留存率等数据,日后再统计分析。
粉丝统计
- 有效数据:2011918
- 范围:0 – 988323
- 截止时间:2016-02-18 21:04:52
哎 – -,我也是有 2 个粉丝的人!
以下是 B 站 TOP20 用户。很多人都非常的眼熟哈。
https://gekspider.org/geek/223.html
- max-width:100%在td或者table-cell里渲染不符合预期小笔记
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
- 使用Ansible自动化您的(云或者本地)机器
- 像Apache Storm一样简单的分布式图计算
- css绘图,实现一些特殊形状
- 看机器学习如何还原图像色彩
- CSS Hack整理
- 如何在调用WCF服务之前弹出一个确认对话框?
- 表格列的hover状态与选中状态
- 神级程序员教你如何写代码——十年编程内功心法
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
- Web-Fontmin -- 在线提取你需要的字体
- 让Kaggle比赛第二名获奖者告诉你:买下一个冰淇淋的最佳时间是什么时候?
- 3种方式提升云可扩展性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenCV与图像处理(二)
- ECCV2020 | SOD100K:超低参数量的高效显著性目标检测算法,广义OctConv和动态权重衰减
- Rust FFI 编程 - Rust导出共享库02
- 常用功能加载宏——单元格数字格式
- 【翻译】200行代码讲透RUST FUTURES (2)
- 【Rust日报】2020-07-23 Rust 的 CI 将使用 GitHub Actions
- 【每周一库】- Tonic 基于Rust的gRPC实现
- 错误捕获
- 常用功能加载宏——单元格合并
- 【Rust日报】2020-07-25 RustScan:一个Rust实现的更快的Nmap
- 常用功能加载宏——单元格字符处理
- 【翻译】Rust生命周期常见误区
- 代码管理
- 【翻译】200行代码讲透RUST FUTURES (3)
- ECCV2020 | FReLU:旷视提出一种新的激活函数,实现像素级空间信息建模