万万没想到,逛B站也能学编程了
作者 | 徐麟,某互联网公司数据分析狮
转载自 | 数据森麟(id:shujusenlin)
前言
很多人提到B站,首先想到的就会是二次元或者鬼畜,上个月,我们公众号也发表了一篇关于B站鬼畜视频的文章:《大数据解读B站火过蔡徐坤的“鬼畜“区巨头们》。
然而,实际上B站其实是个非常神奇的网站,里面的内容可谓是包罗万象,有趣的弹幕文化也能极大地提高大家的体验,B站也逐渐地成为了一个用来学习的“神器”。
近期B站获得了央视网的力挺,报道称B站已经成为了越来越多的年轻人的学习阵地,正所谓“我在B站看番,你却在B站学习” ,今天我们就来爬取B站上那些播放量、弹幕量排名靠前的编程类视频,一起去了解B站的另一面。
数据来源
我们此次的数据主要来源于B站搜索框中输入“编程”后的视频列表及相关信息:
B站一共提供了物种视频排序的方式,每种能够返回前1000个视频,我们分别爬取五种排序所得到的1000个视频之后对5000个视频进行排序,最终得到了2000多个编程类视频的信息
同时我们也增加了一些筛选条件,使得最终获取到的编程教学视频更具代表性:a.所属分类为科技类 b.视频时长大于60分钟,部分代码如下:
## 获得列表def get_list(i,j):attempts = 0success = Falsewhile attempts < 5 and not success:try: url = 'https://search.bilibili.com/all?keyword=%E7%BC%96%E7%A8%8B&from_source=banner_search&order={}&duration=4&tids_1=36&page={}'.format(i,j+1) header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win32; x32; rv:54.0) Gecko/20100101 Firefox/54.0', 'Connection': 'keep-alive'} cookies ='v=3; iuuid=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; webp=true; ci=1%2C%E5%8C%97%E4%BA%AC; __guid=26581345.3954606544145667000.1530879049181.8303; _lxsdk_cuid=1646f808301c8-0a4e19f5421593-5d4e211f-100200-1646f808302c8; _lxsdk=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; monitor_count=1; _lxsdk_s=16472ee89ec-de2-f91-ed0%7C%7C5; __mta=189118996.1530879050545.1530936763555.1530937843742.18' cookie = {} for line in cookies.split(';'): name, value = cookies.strip().split('=', 1) cookie[name] = value html = requests.get(url,cookies=cookie, headers=header).content bsObj = BeautifulSoup(html.decode('utf-8'),"html.parser") script = bsObj.find_all('script')[3].text info = json.loads(script.replace('window.__INITIAL_STATE__=','').split(';(function()')[0])['allData']['video'] return info except: attempts = attempts+1 return []coding_all = []type = ['click','stow','dm']for i in type: for j in range(50): this_coding = get_list(i,j) coding_all = coding_all+this_coding
最终,我们获取到了如下的视频信息列表:
数据分析
获取到数据之后,我们首先关注的是这些视频的主要内容,通过视频给出的标签,绘制整体内容总结的词云图:
可以看到,上面的词云除了编程语言,技术之外包含了许多类似于学习,教程这样的通用描述性词汇,我们需要进一步从中筛选出与编程语言、技术相关的词云,提高词云图的效果:
可以看到,经过筛选后的词云图效果要好很多,其中基本上囊括了现在比较火的编程语言,如Java、Python 以及数据结构、机器学习这些技术类的内容,下面我们来看一下各编程语言的播放量及弹幕量对比:
我们此次将linux也划分到语言类中,可以看到目前基本上就是处于Python、C语言、Java三组鼎力的态势,Python略微领先于其他两种语言,这也一定程度反映了当今的整体发展趋势。由此可见,B站的内容也是与时俱进,适合年轻人去学习了解编程整体发展趋势。
看完了语言类,我们再来看一下具体的技术类排行榜:
可以看到,前端、人工智能、数据框、爬虫这些大家比较关心以及公司有较大需求量的技术都出现在了榜单中,在B站如果能将自己所要从事领域的视频认真学习,也会有很大的提高,部分代码如下:
## 分组统计coding_tag = dataframe_explode(coding,'tag')coding_tag['tag'] = coding_tag['tag'].apply(str.lower)coding_tag['type'] = coding_tag['tag'].map({tag_dict['tag'][k]:tag_dict['type'][k] for k in range(tag_dict.shape[0])})coding_tag = coding_tag.groupby(['title','pic','author','arcurl','tag','type'],as_index=False).agg({'play':'max','danmu':'max','favorites':'max','review':'max'})tag_count = coding_tag.groupby(['tag','type'],as_index=False).agg({'title':['count'],'play':['sum'],'danmu':['sum'],'favorites':['sum']}) tag_count.columns = ['tag','type','num','play','danmu','favorites']## 绘制图片coding_stat = tag_count[tag_count['type']=='语言']coding_stat.sort_values('play',ascending=False,inplace=True)attr = coding_stat['tag'][0:10]v1 = coding_stat['play'][0:10]bar = Bar("语言类播放量TOP10")bar.add("播放数量", attr, v1, is_stack=True, xaxis_rotate=30,xaxis_label_textsize=18, xaxis_interval =0,is_splitline_show=False,label_text_size=12,is_label_show=True)bar.render('语言类播放量TOP10.html')
coding_tag = dataframe_explode(coding,'tag')
coding_tag['tag'] = coding_tag['tag'].apply(str.lower)
coding_tag['type'] = coding_tag['tag'].map({tag_dict['tag'][k]:tag_dict['type'][k] for k in range(tag_dict.shape[0])})
coding_tag = coding_tag.groupby(['title','pic','author','arcurl','tag','type'],as_index=False).agg({'play':'max','danmu':'max','favorites':'max','review':'max'})
tag_count = coding_tag.groupby(['tag','type'],as_index=False).agg({'title':['count'],'play':['sum'],'danmu':['sum'],'favorites':['sum']})
tag_count.columns = ['tag','type','num','play','danmu','favorites']
## 绘制图片
coding_stat = tag_count[tag_count['type']=='语言']
coding_stat.sort_values('play',ascending=False,inplace=True)
attr = coding_stat['tag'][0:10]
v1 = coding_stat['play'][0:10]
bar = Bar("语言类播放量TOP10")
bar.add("播放数量", attr, v1, is_stack=True, xaxis_rotate=30,xaxis_label_textsize=18,
xaxis_interval =0,is_splitline_show=False,label_text_size=12,is_label_show=True)
bar.render('语言类播放量TOP10.html')
精品视频
分析完整体视频内容的分布情况,我们再来看下那些最为精品的视频,由于B站以弹幕文化为特色,我们就依据弹幕量来为大家精选出一些非常不错的视频,首先是所有编程类视频的TOP20:
我们下面分别看一下三足鼎立中的Python、Java、C语言分别弹幕量排名前十的视频信息:
写在最后
B站的阿婆主为为大家提供了特别多的编程学习资源,大家在学习知识的同时,也需要注意的就是相应的版权信息。上传视频一定要确认版权不存在问题之后再去上传,另外如果发现有存在侵权的问题,也要及时跟视频作者进行反馈,及时将侵权视频下架。
另外,希望大家能够多多支持技术类的视频和阿婆主,如果觉得不错就不要吝惜手中的硬币,让更多的技术类阿婆主有动力为大家提供更多更好的视频内容。
(*本文为 AI科技大本营转载文章,转载请联系原作者)
◆
CTA核心技术及应用峰会
◆
5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。
更多重磅嘉宾请识别海报二维码查看,点击阅读原文即刻抢购。添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。
推荐阅读
一文回顾AI绘画的成长之路:从简笔画到真实人脸生成
@程序员,Python 3还有哪些未Get的潜藏技能?| 技术头条
AI画家——毕业设计大杀器之Flask
干货 | 超实用的PyTorch常用代码段合集
60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网!
厉害!女学生偷师男子学校,变身区块链开发工程师
真壕!腾讯员工平均月薪 7 万!
如何使用「番茄法」高效的写算法题?
深扒! 币安被盗的7074.18枚比特币去哪了?
这家公司的 IoT ,你可千万别低估!
点击阅读原文,了解「CTA核心技术及应用峰会」
相关文章:

【Qt】Qt再学习(十一):图形视图框架(Graphics View Framework)的一个小demo
1、简介 使用的主要类:QGraphicsTextItem、QGraphicsScene、QGraphicsView。 QGraphicsTextItem继承自QGraphicsObject,而QGraphicsObject继承自QObject和QGraphicsItem; QGraphicsItem可以是2D曲面上的图形项目,例如线条,矩形,文本甚至自定义项目,本例中演示的文本QGr…

国产海翼号水下滑翔机首次应用于北极科考
中国第九次北极科学考察队7月28日在白令海公海区域成功布放我国自主研发的“海翼”号水下滑翔机。这是我国自主研发的水下滑翔机首次在白令海布放,也是首次应用于中国北极科考。 北京时间28日5时23分,考察队队员们将“海翼”号水下滑翔机缓缓送入海中。在…

高性能网站性能优化与系统架构(ZT)
转载请保留出处:俊麟 Michael’s blog (http://space.itpub.net/7311285/viewspace-97) 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自…

非常全面的AutoML资源,看这个就够了!
整理 | Rachel责编 | 琥珀出品 | AI科技大本营(id:rgznai100)深度学习的发展促进了相关应用的涌现。但是,深度学习模型往往具有非常大的参数搜索空间,为了保证模型的效果,经常需要机器学习专家耗费大量的时…

【Qt】Qt再学习(十二):QGraphicsItem
1、简介 QGraphicsItem是用于场景QGraphicsScene中在所有图形项的基类,它是一个纯虚类,不能直接使用。子类化QGraphicsItem后,需要重新实现图形项的几何形状、碰撞检测、绘画实现、事件处理。 常用图形项: 类名图形项QGraphicsEllipseItem椭圆QGraphicsLineItem直线QGrap…

一堆乱七八糟绝不正经的排序算法
原文 索引 猴子排序 钻石排序(戴蒙德排序) 恶魔排序 珠排序 地精排序(怂货排序) 智能设计排序 1. 猴子排序 (提供者cy1306110516) 猴子排序的思想源自于著名的无限猴子定理。 既然猴子们能敲出《哈姆雷…

好久没有更新了!
好久没有更新博客了,主要是因为本人在从事信息化监理行业,遇到了困惑的事情,不时地在问自己,选择这个行业,对吗? 从事这个行业,已经换了两家公司,对于信息化监理事业却秉承不同的理念…

多人开发情况下的字符串本地化
项目开发中,独立开发的还是少数。经常会有多人开发的情况,这种情况,如果多人同时操作本地化文件,极有可能会存在冲突。另一方面,我们又不希望自己的本地化文件受到对方的污染,也就是说,我们不希…

【Ubuntu】制作usb启动盘安装ubuntu18.04时报错:“failed to load ldlinux.c32”
1、问题描述 使用UltraISO制作ubuntu18.04操作系统的usb启动盘后,按照时报错: failed to load ldlinux.c32ubuntu16.04、ubuntu14.04没有遇到这个问题。 2、原因 未知 3、解决方法 参考博客 https://blog.csdn.net/tnaig/article/details/81139887…

清华AI学堂班:姚期智担任首席教授,2019年首批招收30人
整理 | 琥珀出品 | AI科技大本营(id:rgznai100)清华流传一句话,半国英才聚清华,而清华一半英才在“姚班”。据不完全统计,自 2005 年开班至今,“姚班”已有10位毕业生进入学界执教斯坦福大学、普…

php函数get_magic_quotes_gpc详解
2019独角兽企业重金招聘Python工程师标准>>> set_magic_quotes_runtime是用来设置PHP 环境配置的变量 magic_quotes_runtime 值。 0-关闭 1-打开 程序中检测状态用get_magic_quotes_runtime,返回 0 表示关闭本功能;返回 1 表示本功能打开。若magic_quote…

掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程
作者 | Himanshu Rawlani译者 | Monanfei,责编 | 琥珀出品 | AI科技大本营(id:rgznai100)2019 年 3 月 6 日,谷歌在 TensorFlow 开发者年度峰会上发布了最新版的 TensorFlow 框架 TensorFlow2.0 。新版本对 TensorFlow…

【Qt】Qt再学习(十四):QGraphicsView
1、简介 QGraphicsView提供显示QGraphicsScene的功能,它继承自QAbstractScrollArea,因此它还是一个带滚动条的窗口,这样可以实现只场景的一部分。还可以创建多个QGraphicsView来显示同一个QGraphicsScene,类似 QTableView、QTreeView和QListView的显示,官方专业的描述是“…

6月27日任务 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
2019独角兽企业重金招聘Python工程师标准>>> 16.4 配置Tomcat监听80端口 1. vim /usr/local/tomcat/conf/server.xml Connector port"8080" protocol"HTTP/1.1" 修改为Connector port"80" protocol"HTTP/1.1" 2. /usr/loca…

Excel导入SQL数据库完整代码
protected void studentload_Click(object sender, EventArgs e){//批量添加学生信息SqlConnection conn DB.dataBaseConn();//链接数据库conn.Open();try{string fileurl typename(studentFileUpload);//调用typename方法取得excel文件路径DataSet ds new DataSet();//取得…

33关Python游戏,测试你的爬虫能力到底及格不?
作者 | 苏克1900责编 | 胡巍巍转载自高级农民工(ID: Mocun6)最近在网上看到一个非常有意思的 Python 游戏通关网站,一共有 33 关,每一关都需要利用 Python 知识解题找到答案,然后进入下一关。很考验对 Python 的综合掌…

【Qt】Qt再学习(十五):关于paintEvent、QPainter学习这一个demo就够了
1、描述 关于绘画事件paintEvent和绘制类QPainter的使用,推荐参考QtCreator中自带的示例basicdrawing。通过这个例子就能掌握QPainter的所有基本用法。下面是这个例子的几张截图:
HTTP缓存——304与200 from cache
个人博客原文地址 HTTP与缓存相关的字段 1. 通用字段 字段名称释义Cache-Control控制缓存具体的行为PragmaHTTP1.0时的遗留字段,当值为"no-cache"时强制验证缓存Date创建报文的日期时间(启发式缓存阶段所用)2. response字段 字段名称释义ETag服务器生成资…

一个多年网络工程师总结的工作实用经验
转载自:51CTO下载频道 1、 交换机选购指南l 设备基本指标:网络接口类型、用户可用插槽数、端口密度。l 设备功能指标:VLAN划分、堆叠、单播和组播协议支持、可网管。l 设备性能指标:背板带宽、包转…

【Qt】Qt再学习(十六):QObject::connect: Cannot queue arguments of type ‘QString‘
1、问题描述 跨线程使用信号和槽时,如果是非const的引用传参,就会报如下的错误: QObject::connect: Cannot queue arguments of type QString& (Make sure QString& is registered using qRegisterMetaType().)2、测试示例 #include <QCoreApplication>

微软提出极低资源下语音合成与识别新方法,小语种不怕没数据!| ICML 2019
作者 | 谭旭转载自微软研究院AI头条(ID: MSRAsia)编者按:目前,人类使用的语言种类有近7000种,然而由于缺乏足够的语音-文本监督数据,绝大多数语言并没有对应的语音合成与识别功能。为此,微软亚洲…

面试准备--7.31
22222转载于:https://www.cnblogs.com/czlovezmt/p/9398015.html

那些年,让我面试头大的几个排序算法,今天终于搞懂了!
作者 | 逆流的鱼yuiop转载自何俊林(ID:smartyuge)算法上,最基础的就是排序算法,几乎在面试中,或多或少会要求你手写一些基础算法。今天鱼哥带大家这些基础算法回顾下。快速排序介绍:快速排序(Qu…

【天线】天线基础:名词解释
1、定向天线和全向天线 先上图,第一张图是定向天线(一根棍子加一块板),第二张图是全向天线(一根棍子) 网上的几种解释: 全向天线就是一个棍子,围绕棍子有一圈儿信号;定…

springBean生命周期----来自spring实战总结
1、Spring对bean进行实例化 2、Spring将值和bean的引用注入到bean对应的属性中(比如说注入到被依赖的bean的方法中或属性里) 3、如果bean实现了BeanNameAware接口,将会将bean的Id传入setBeanName()方法中 4、如果bean实现了BeanFactoryAware接口,将会设置bean的BeanFactory的引…

disk boot failure,insert system disk and press enter
每次一开机就出现提示:"disk boot failure,insert system disk and press enter"http://topic.csdn.net/t/20061202/08/5201096.html 转载于:https://blog.51cto.com/yfb880106/857829

深度讲解:web前端性能优化
一、课程简介: 1、课程大纲 涉及到的分类 网络层面构建层面浏览器渲染层面服务端层面涉及到的功能点 资源的合并与压缩图片编解码原理和类型选择浏览器渲染机制懒加载预加载浏览器存储缓存机制PWAVue-SSR前端性能优化原理 作用及原理如何与真实业务场景结合理论结合…

Google Android向华为“闭源”,华为手机迎来至暗时刻!
作者 | 屠敏转载自CSDN(ID:CSDNnews)居安思危任正非,未雨绸缪如华为。在贸易战的背景下,即使早在多年前已在多个层面做好“备胎”计划的华为,在面对美国对芯片乃至操作系统等系列釜底抽薪的打压时ÿ…

【C++】C++好书推荐
一、吴咏炜推荐 1、入门级 Bjarne Stroustrup, A Tour of C, 2nd ed. Addison-Wesley, 2018 中文版: 王刚译,《C 语言导学》(第二版)。机械工业出版社,2019 Bjarne Stroustrup, The C Programming Language, 4th ed. Addison-W…

HDOJ2569 ( 彼岸 ) 【递推公式】
f13f29f321f451猜测f(n)2*f(n-1)f(n-2)在纸上打草稿写出f3的情况,然后推出f4的情况(在f3后边加*2或*3就成)f3 f4 f3 f4 f3 f4111*3 222*3 333*3112*2 221*2 331*2113*2 223*2 332*2121*2 212*2 313*2131*2 …