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

举报
北山啦 发表于 2021/04/21 00:10:00 2021/04/21
【摘要】 上篇介绍了B站评论的获取方法和数据分析过程,本次将详细讲解B站弹幕爬取原理解析,这里讲解最简单的获取b站弹幕的方法,但也有局限性,仅仅获取了当日的弹幕,但当我再次尝试后,403了,以后再尝试改进把。以==冰冰第一条b站视频为例==为例 可以先看看这个爬取冰冰B站千条评论,看看大家说了什么 文章目录 原理概念步骤 实际案例获取视频cid...

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

在这里插入图片描述

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

原理

概念

  • 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格式,在提取出来相应的弹幕文字,就可以进行词频分析,得到词云。
    在这里插入图片描述

实际案例

获取视频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) #调用爬取弹幕函数

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

爬取当前的弹幕函数

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'])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

词云图

在这里插入图片描述

推荐阅读:

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

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


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

文章来源: blog.csdn.net,作者:北山啦,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45176548/article/details/112235146

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。