冰冰B站视频弹幕爬取原理解析

上篇介绍了B站评论的获取方法和数据分析过程,本次将详细讲解B站弹幕爬取原理解析,这里讲解最简单的获取b站弹幕的方法,但也有局限性,仅仅获取了当日的弹幕,但当我再次尝试后,403了,以后再尝试改进把。以==冰冰第一条b站视频为例==为例

可以先看看这个爬取冰冰B站千条评论,看看大家说了什么

文章目录

    • 原理
      • 概念
      • 步骤
    • 实际案例
      • 获取视频cid
      • 爬取当前的弹幕函数
      • 词云图

原理

概念

  • cid : 爬取弹幕需要的id号,可以由BV号通过API接口获得

步骤

以==冰冰第一条b站视频为例==为例

  1. 视频链接:https://www.bilibili.com/video/BV1vy4y1i7bS,得到BV号=BV1vy4y1i7bS
  2. BV转cid,浏览器输入:https://api.bilibili.com/x/player/pagelist?bvid=BV1vy4y1i7bS&jsonp=jsonp,得到:cid=273039189。由cid得到当日条数小于等于1000的弹幕
  3. 浏览器输入https://api.bilibili.com/x/v1/dm/list.so?oid=273039189
  4. 该页面为XML格式,python可通过xmltodict库解析XML格式,在提取出来相应的弹幕文字,就可以进行词频分析,得到词云。
    冰冰B站视频弹幕爬取原理解析_第1张图片

实际案例

获取视频cid

    url = "https://api.bilibili.com/x/player/pagelist?bvid="+str(bvid)+"&jsonp=jsonp"
    response = requests.get(url)
    dirt=json.loads(response.text)
    cid=dirt['data'][0]['cid']
    #cid号 已得到
    nowDMget(cid)     #调用爬取弹幕函数

爬取当前的弹幕函数

def nowDMget(cid): 
    url = "https://api.bilibili.com/x/v1/dm/list.so?oid="+str(cid)
    response = requests.get(url)
    response.encoding = 'utf-8'
    data = parse(response.text)  
    liat_DM=data['i']['d']
    print(len( liat_DM))
    for i in range(len( liat_DM)):
        print(liat_DM[i]['#text'])

词云图

冰冰B站视频弹幕爬取原理解析_第2张图片

推荐阅读:

  1. 使用xpath爬取数据
  2. jupyter notebook使用
  3. BeautifulSoup爬取豆瓣电影Top250
  4. 一篇文章带你掌握requests模块
  5. Python网络爬虫基础–BeautifulSoup

此次的获取方法肯定不是最优的,抛砖引玉。希望大家可以把更好的方法打在评论,或私信给我


到这里就结束了,如果对你有帮助你,欢迎点赞关注,你的点赞对我很重要

你可能感兴趣的:(爬虫案例,python,数据挖掘)