43

资源整理,在B站也能学编程

 4 years ago
source link: https://www.tuicool.com/articles/r2QZVfN
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文转自公众号『 数据森麟 』,详情请扫码关注该公众号

fQ32EfR.jpg!web

bQbYrqa.jpg!web

作者:徐麟,某互联网公司数据分析狮,个人公众号数据森麟(id:shujusenlin)

6nAVrqU.png!web

前言

很多人提到B站,首先想到的就会是二次元或者鬼畜,上个月,我们公众号也发表了一篇关于B站鬼畜视频的文章: 大数据解读B站火过蔡徐坤的“鬼畜“区巨头们

Jjey6ja.jpg!web

然而,实际上B站其实是个非常神奇的网站,里面的内容可谓是包罗万象,有趣的弹幕文化也能极大地提高大家的体验,B站也逐渐地成为了一个用来学习的“神器”。

qamMzuZ.jpg!web

近期B站获得了央视网的力挺,报道称B站已经成为了越来越多的年轻人的学习阵地,正所谓“我在B站看番,你却在B站学习” ,今天我们就来爬取B站上那些播放量、弹幕量排名靠前的编程类视频,一起去了解B站的另一面。

6nAVrqU.png!web

数据来源

我们此次的数据主要来源于B站搜索框中输入“编程”后的视频列表及相关信息:

Uriiayf.jpg!web

B站一共提供了物种视频排序的方式,每种能够返回前1000个视频,我们分别爬取五种排序所得到的1000个视频之后对5000个视频进行排序,最终得到了2000多个编程类视频的信息

同时我们也增加了一些筛选条件,使得最终获取到的编程教学视频更具代表性:a.所属分类为科技类 b.视频时长大于60分钟,部分代码如下:

## 获得列表
def get_list(i,j):
attempts = 0
success = False
while attempts < 5 and not success:
try:
url = 'https://search.bilibili.com/all?keyword=%E7%BC%96%E7%A8%8B&from_source=banner_searchℴ={}&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

最终,我们获取到了如下的视频信息列表

ueqUzuV.jpg!web

6nAVrqU.png!web

数据分析

获取到数据之后,我们首先关注的是这些视频的主要内容,通过视频给出的标签,绘制整体内容总结的词云图:

yqUJJvU.jpg!web

可以看到,上面的词云除了编程语言,技术之外包含了许多类似于学习,教程这样的通用描述性词汇,我们需要进一步从中筛选出与编程语言、技术相关的词云,提高词云图的效果:

YrQNJbq.jpg!web

可以看到,经过筛选后的词云图效果要好很多,其中基本上囊括了现在比较火的编程语言,如Java、Python 以及数据结构、机器学习这些技术类的内容,下面我们来看一下各编程语言的播放量及弹幕量对比:

iYjmyiB.jpg!web

vyMZJvR.jpg!web

我们此次将linux也划分到语言类中,可以看到目前基本上就是处于Python、C语言、Java三组鼎力的态势,Python略微领先于其他两种语言,这也一定程度反映了当今的整体发展趋势。由此可见,B站的内容也是与时俱进,适合年轻人去学习了解编程整体发展趋势。

看完了语言类,我们再来看一下具体的技术类排行榜:

iuquyuq.jpg!web

Mja6NfJ.jpg!web

可以看到,前端、人工智能、数据框、爬虫这些大家比较关心以及公司有较大需求量的技术都出现在了榜单中,在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')
6nAVrqU.png!web

精品视频

分析完整体视频内容的分布情况,我们再来看下那些最为精品的视频,由于B站以弹幕文化为特色,我们就依据弹幕量来为大家精选出一些非常不错的视频,首先是所有编程类视频的TOP20:

jyAnqmR.jpg!web

aABVjaV.jpg!web

我们下面分别看一下三足鼎立中的Python、Java、C语言分别弹幕量排名前十的视频信息:

iqAR7n2.jpg!web

JjaiInM.jpg!web

vA3IBbJ.jpg!web

6nAVrqU.png!web

写在最后

B站的阿婆主为为大家提供了特别多的编程学习资源,大家在学习知识的同时,也需要注意的就是相应的版权信息。上传视频一定要确认版权不存在问题之后再去上传,另外如果发现有存在侵权的问题,也要及时跟视频作者进行反馈,及时将侵权视频下架。

另外,希望大家能够多多支持技术类的视频和阿婆主,如果觉得不错就不要吝惜手中的硬币,让更多的技术类阿婆主有动力为大家提供更多更好的视频内容 veEfYjn.png!web

往期阅读:

一个超有意思的 Python 综合能力测试网站

为什么说要在边界内做事情?附文末福利

【上市啦】“Python 之父” 力荐的蓝皮书,你知道是哪本吗?

数据可视化轻松玩转(项目实战经验分享)

[技巧]如何使用Python将字符串生成PDF

BN3MjmI.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK