使用python爬取B站千万级数据


Posted in Python onJune 08, 2018

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

使用python爬取B站千万级数据

粉丝独白

说起热门的B站相信很多喜欢玩动漫的,看最有创意的Up主的同学一定非常熟悉。我突发奇想学Python这么久了,为啥不用Python爬取B站中我关注的人,已经关注的人他们关注的人,看看全站里面热门的UP主都是是哪些。

要点:

- 爬取10万用户数据

- 数据存储

- 数据词云分析

1.准备阶段

写代码前先构思思路:既然我要爬取用户关注的用户,那我需要存储用户之间的关系,确定谁是主用户,谁是follower。

存储关系使用数据库最方便,也有利于后期的数据分析,我选择sqlite数据库,因为Python自带sqlite,sqlite在Python中使用起来也非常方便。

数据库中需要2个表,一个表存储用户的相互关注信息,另一个表存储用户的基本信息,在B站的用户体系中,一个用户的mid号是唯一的。

然后我还需要一个列表来存储所以已经爬取的用户,防止重复爬取,毕竟用户之间相互关注的现象也是存在的,列表中存用户的mid号就可以了。

2.新建数据库

先写建数据库的代码,数据库中放一个用户表,一个关系表:

使用python爬取B站千万级数据

3.爬取前5页的用户数据

我需要找到B站用户的关注列表的json接口,很快就找到了,地址是:

https://api.bilibili.com/x/relation/followings?vmid=2&pn=1&ps=20&order=desc&jsonp=jsonp&callback=__jp7

其中vimd=后的参数就是用户的mid号

pn=1指用户的关注的第一面用户,一面显示20个用户

因为B站的隐私设置,一个人只能爬取其他人的前5页关注,共100人。

使用python爬取B站千万级数据

整个爬取页面的思路比较简单,首先设置header,用requests库进行API请求,获得关注的用户数据列表。

我们爬取前5页,每一页的数据进行简单的处理,然后转为字典数据进行获取mid,uname,sign3个维度的数据,最后save()函数存入db.

使用python爬取B站千万级数据

4.存入数据库

我们数据集里面一共有2个表,一个用户列表,用来存储所以的用户信息,一个是用户之间的关注信息。

使用python爬取B站千万级数据

5.探秘是热门UP主

打算利用已经爬取到本地的数据进行词云的生成,来看一下这10万用户中共同的关注的哪些UP主出现的次数最多。

代码的思路主要是从数据库中获取用户的名字,重复的次数越多说明越多的用户关注,然后我使用fate的一张图片作为词云的mask图片,最后生成词云图片。

使用python爬取B站千万级数据

最后一起来看一下词云图

使用python爬取B站千万级数据

可以看出蕾丝,暴走漫画,木鱼水心,参透之C君,papi酱等B站大UP主都是热门关注。

使用python爬取B站千万级数据

Python可以做什么?

web开发和 爬虫是比较适合 零基础的

自动化运维 运维开发 和 自动化测试 是适合 已经在做运维和测试的人员

大数据 数据分析 这方面 是很需要专业的 专业性相对而言比较强

科学计算 一般都是科研人员 在用

机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大

Python 相关文章推荐
老生常谈python函数参数的区别(必看篇)
May 29 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Python数据类型之List列表实例详解
May 08 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
520使用Python实现“我爱你”表白
May 20 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python如何实现远程方法调用
Aug 07 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
python非标准时间的转换
Jul 25 Python
pandas表连接 索引上的合并方法
Jun 08 #Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 #Python
python实现人人自动回复、抢沙发功能
Jun 08 #Python
利用Python写一个爬妹子的爬虫
Jun 08 #Python
python os用法总结
Jun 08 #Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 #Python
浅谈Pandas 排序之后索引的问题
Jun 07 #Python
You might like
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
PHP STRING 陷阱原理说明
2010/07/24 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
JavaScript事件 "事件对象"的注意要点
2016/01/14 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
python安装gdal的两种方法
2019/10/29 Python
python文件路径操作方法总结
2020/12/21 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
机关作风整顿个人整改措施2014
2014/09/17 职场文书
党的作风建设心得体会
2014/10/22 职场文书
庆祝教师节主持词
2015/07/06 职场文书
春节慰问简报
2015/07/21 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
Python字符串的转义字符
2022/04/07 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS