分享

你相信逛B站也能学编程吗?

 ynhnzp 2020-03-23

640?wx_fmt=png

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

640

前言

很多人提到B站,首先想到的就会是二次元或者鬼畜,上个月,我们公众号也发表了一篇关于B站鬼畜视频的文章:

640?wx_fmt=png

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

640?wx_fmt=png

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

640

数据来源

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

640?wx_fmt=png

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

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

  1. ## 获得列表
  2. def get_list(i,j):
  3. attempts = 0
  4. success = False
  5. while attempts < 5 and not success:
  6. try:
  7.     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)
  8.     header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win32; x32; rv:54.0) Gecko/20100101 Firefox/54.0',
  9.     'Connection': 'keep-alive'}
  10.     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'
  11.     cookie = {}
  12.     for line in cookies.split(';'):
  13.         name, value = cookies.strip().split('=', 1)
  14.         cookie[name] = value
  15.         html = requests.get(url,cookies=cookie, headers=header).content
  16.         bsObj = BeautifulSoup(html.decode('utf-8'),'html.parser')
  17.         script = bsObj.find_all('script')[3].text
  18.         info = json.loads(script.replace('window.__INITIAL_STATE__=','').split(';(function()')[0])['allData']['video']
  19.     return info
  20.     except:
  21.         attempts = attempts+1
  22.     return []
  23. coding_all = []
  24. type = ['click','stow','dm']
  25. for i in type:
  26.     for j in range(50):
  27.         this_coding = get_list(i,j)
  28.         coding_all = coding_all+this_coding

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

640?wx_fmt=png

640

数据分析

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

640?wx_fmt=png

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

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

640?wx_fmt=png

640?wx_fmt=png

可以看到,前端、人工智能、数据框、爬虫这些大家比较关心以及公司有较大需求量的技术都出现在了榜单中,在B站如果能将自己所要从事领域的视频认真学习,也会有很大的提高,部分代码如下:

  1. ## 分组统计
  2. coding_tag = dataframe_explode(coding,'tag')
  3. coding_tag['tag'] = coding_tag['tag'].apply(str.lower)
  4. coding_tag['type'] = coding_tag['tag'].map({tag_dict['tag'][k]:tag_dict['type'][k] for k in range(tag_dict.shape[0])})
  5. coding_tag = coding_tag.groupby(['title','pic','author','arcurl','tag','type'],as_index=False).agg({'play':'max','danmu':'max','favorites':'max','review':'max'})
  6. tag_count = coding_tag.groupby(['tag','type'],as_index=False).agg({'title':['count'],'play':['sum'],'danmu':['sum'],'favorites':['sum']})
  7. tag_count.columns = ['tag','type','num','play','danmu','favorites']
  8. ## 绘制图片
  9. coding_stat = tag_count[tag_count['type']=='语言']
  10. coding_stat.sort_values('play',ascending=False,inplace=True)
  11. attr = coding_stat['tag'][0:10]
  12. v1 = coding_stat['play'][0:10]
  13. bar = Bar('语言类播放量TOP10')
  14. bar.add('播放数量', attr, v1, is_stack=True, xaxis_rotate=30,xaxis_label_textsize=18,
  15.         xaxis_interval =0,is_splitline_show=False,label_text_size=12,is_label_show=True)
  16. bar.render('语言类播放量TOP10.html')
640

精品视频

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

640?wx_fmt=png

640?wx_fmt=png

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

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640

写在最后

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多