美文网首页张洋铭Ocean
抓取了BiliBili能获取哪些数据?

抓取了BiliBili能获取哪些数据?

作者: 张洋铭Ocean | 来源:发表于2017-01-24 11:33 被阅读458次

    在知乎上看到一道题目:bilibili 上有哪些值得反复观看的视频?于是动了歪脑袋,决定对bilibili站的视频进行一次遍历。因为上班比较忙,断断续续的做着爬虫,幸运的是我还是做好了,当然这有很大一部分原因是女票对bilibili站视频的榜单很感兴趣。

    数据出来了之后开开心心的列了几个榜单


    1、bilibili站播放量最高的前100个视频
    2、bilibili站评论量最高的前100个视频
    3、bilibili站分享量最高的前100个视频
    4、bilibili站收藏量最高的前100个视频
    5、bilibili站硬币量最高的前100个视频
    6、bilibili站弹幕量最高的前100个视频

    其实列榜单是一件很容易的事情,无非就是sql语句(信息存储我用的Mysql),以下这个sql就是简单的提取了播放量前一百名的视频信息,其它项同理。

    select * from V_score order by v_view desc limit 100;

    下面就让我们从头开始说起。

    首先按照以往的套路,我们去找找视频的api,F12一下你就知道。

    http://api.bilibili.com/archive_stat/stat?aid=

    aid后面的数字就是视频的id,通过观察也很好理解他的视频id是从0开始自增长,相当于一个主键,于是我们只要从0开始往后遍历并且取出我们需要的信息即可,简单代码自行实现。

    这个json数据相信你们一看就很明白。

    然后你可以做一个多线程,要用的库:多线程相关。你可以写个分布式。

    class MyThread(Thread):
        """docstring for MyThread"""
        def __init__(self, db):
            super(MyThread, self).__init__()
            self.db = db
        def run(self):
            try:
                global counter, mutex
                while counter < 7000000:
                    if mutex.acquire():
                        counter += 1
                        readEver(self.db,counter)
                        mutex.release()
            except:
                pass

    然后写入数据库,要用到的库:MySQLdb

    def Insert(db,v_id,v_view,v_favorite,v_share,v_reply,
    v_coin,v_danmaku):
        """向数据库增加数据,添加失败回滚,指定,列"""
        cursor = db.cursor()
        sql = "INSERT INTO V_score(v_id,v_view,v_favorite,
        v_share,v_reply,v_coin,v_danmaku) VALUES(" + v_id+',
        '+v_view+','+v_favorite+','+v_share+','+v_reply+',
        '+v_coin+','+v_danmaku+')'
        print v_id+','+v_view+','+v_favorite+',
        '+v_share+','+v_reply+','+v_coin+','+v_danmaku
        try:
            cursor.execute(sql)
            db.commit()
        except:
            print 'failed'
            db.rollback()

    就这样,数据会陆陆续续的存到数据库里,经过一段很长时间,数据有了。这时候我们去看一下数据库,看一下总数据,看一下表结构。

    接下来我做第一件事情就是开头说的那样,列了所有单项的榜单,本来以为事情到这里就结束了。但是突然看到了这个:https://github.com/airingursb/bilibili-user 对bilibili的用户进行了分析,于是我也来了兴致。

    想做的第一件事情是就是看看播放量的分布,结果第一次我这么干了,我统计了每1000000之间的视频分布,结果是我太蠢了。

    是我太天真了,赶紧把维度放到100000放小,结果仍然是

    可喜可贺,至少我们已经能逐渐看到其他维度所标记的圆了,接下来我们把维度放到1w,万念俱焚我们还是放到1k吧。

    最后我们对播放的量进行一个大体划分。

    至此,不再往下做统计。可以很明显的看出,bilibili站的大部分的视频播放量都是在1k以下。看看你的视频在哪个圈圈里?播放量过1000w的视频有六个是:


    16777215 【测试重要勿动】
    13119867 【官方中文】Fate/Zero_完结动画
    12448148 【4月】在下坂本有何贵干? 01【独家正版】
    12091575 【高清日剧】Legal High/胜者即是正义(全11回+SP1)【人人】
    11089492 【电音单曲】我是papi酱
    10883765 【古筝】千本樱——你可见过如此凶残的练习曲

    播放量在100w以上的都是一些什么视频?何不一起来看看。100w播放量以上视频共计2520条,我们取2520条记录的所有的的视频标题生成词云,如下图所显示(对一些已经被删除或者封禁的视频已经进行了删除)。

    通过以下的词云图片发现:播放量超1000w的标题关键词并没有出现在100w以上词云中,因此做出推测播放量最高的视频都非连载视频,或者是连载视频但是只有那一集做的比较出彩,其他做的相对普通

    用户最爱的视频(即喜欢数量最多的前1000的视频的标题的词云,我取了前80个关键词)

    喜欢数量大于20w的分别是


    414258 【古筝】千本樱——你可见过如此凶残的练习曲
    294699 【综漫 ASMV】 弱者(完整版)/The Weak (Full ver.)_MAD·AMV_动画_bilibili_哔哩哔哩弹幕视频网
    276602 【全明星Rap】黑喂狗!
    274509 2016拜年祭 - 嗶哩嗶哩
    272262 【灵魂rap】如何让孩子爱上♂学习?
    247376 【みうめ・メイリア(GARNiDELiA)・仮面ライアー217】極楽浄土【第4弾!!!】
    237712 【2016拜年祭单品】九九八十一【乐正绫 feat.洛天依】_VOCALOID·UTAU_音乐_bilibili_哔哩哔哩弹幕视频网
    225638 【电音单曲】我是papi酱
    225242 这大概是最好的日语入门教学了吧----五十音学习

    同样与用户最爱的视频标题词云进行对比,同样发现较高的几个视频的标题所含关键词并没有包含在1k视频的关键词词云中。

    用户最喜欢赞赏哪一类视频?(即获得硬币次数的前1000的视频的标题的词云,仍然是提取了前80个关键词)

    收藏数量大于20w的视频分别是

    747163 2016拜年祭 - 嗶哩嗶哩
    579159 【敖厂长】打脸!魂斗罗水下八关存在
    477442 【古筝】千本樱——你可见过如此凶残的练习曲
    216539 【电音单曲】我是papi酱

    什么样的视频用户最喜欢发弹幕?(即获得发弹幕数量最高的前1000的视频的标题的词云,提取了前200个关键词)

    用户弹幕数量大于100w的视频分别是


    1786762 2016拜年祭 - 嗶哩嗶哩
    1636244 【7月】雏蜂序章 上
    1616678 【散人】大型励志剧 娱乐圈小助理养成计划(已更新至重置P12 遇龙开播)
    1372501 哔哩哔哩弹幕视频网
    1348562 【4月】在下坂本有何贵干? 01【独家正版】
    1283413 【更新6P】莫名其妙就跟着唱了
    1093778 【官方中文】Fate/Zero_完结动画
    1040490 【高级弹幕游戏】弹幕躲避

    如果按照一定的规则选取出最热的视频。这里我以积分规则为:

    总积分 = 播放量  +  收藏量*20 + 分享量*30 + 评论量*10 + 弹幕数量*10 + 硬币量*500

    得到总积分超过5000w的视频排名如下:

    413116213 2016拜年祭 - 嗶哩嗶哩

    293558556 【敖厂长】打脸!魂斗罗水下八关存在

    266826725 【古筝】千本樱——你可见过如此凶残的练习曲

    128029442 【电音单曲】我是papi酱

    103874369 【全明星Rap】黑喂狗!

    96340003 【潇洒一辣】请把尊严还给中国医生

    93445805 【丞相&司徒】大忠若奸

    89073818 【敖厂长】抢滩登陆你玩过吗

    83319479 【极乐净土】咬人猫/有咩酱/赤九玖❤155小分队o(*≧▽≦)ツ

    78733416 【综漫 ASMV】 弱者(完整版)/The Weak (Full ver.)_MAD·AMV_动画_bilibili_哔哩哔哩弹幕视频网

    76606103 【2016拜年祭单品】九九八十一【乐正绫 feat.洛天依】_VOCALOID·UTAU_音乐_bilibili_哔哩哔哩弹幕视频网

    73974321 【筝鼓和鸣】权御天下 ——墨韵随步摇 ft. 司鼓君

    73327696 【丞相&司徒】此物天下绝响

    72829164 【灵魂rap】如何让孩子爱上♂学习?

    67730297 【迷之RAP】老司机教你做人

    67027737 主播真会玩鬼畜篇01:我是全英雄联盟最骚的骚猪!_鬼畜调教

    66765413 【鬼畜大合作】因为,我们爱着鬼畜

    64698638 【4月】在下坂本有何贵干? 01【独家正版】

    61256809 【散人】大型励志剧 娱乐圈小助理养成计划(已更新至重置P12 遇龙开播)

    58381715 [修复]王司徒VS诸葛亮——穿越时空的对决

    55153662 【敖厂长】200期 达成!

    53928472 【咬人猫】妖精的尾巴OP15❤MASAYUME CHASING o(*≧▽≦)ツ

    53775520 【鬼畜全明星】双♂人♂舞

    52831632 【西游合唱团】九九八十一

    51726296 【暴走大事件第四季】27 铁柱身陷重金求子,探寻一夜二百万真相!

    50879305 【去违和】周杰伦献唱核爆神曲aLIEz 与霍元甲的remix版本 aHUOz!

    50636553 西游记之大圣归来

    这些具有超高价值的视频组成的关键词词云会是怎样呢?

    那么你看到了你熟悉的字眼了嘛?

    ◆  ◆  ◆  ◆  ◆  

    来源:

    作者介绍:张洋铭,投资人中最懂动漫的程序员,负责PlugandPlay早期科技类项目投资,个人关注动漫智能助理。

    微信公众号:张洋铭Ocean(ocean_anidata)

    BP请投递至:ocean.zhang@plugandplaychina.com

    原文链接:https://zhuanlan.zhihu.com/p/22541207

    相关文章

      网友评论

      本文标题:抓取了BiliBili能获取哪些数据?

      本文链接:https://www.haomeiwen.com/subject/hqezbttx.html