Python利用B站弹幕制作词云图

举报
北山啦 发表于 2022/05/13 21:35:46 2022/05/13
【摘要】 Python利用B站弹幕制作词云图上篇介绍了B站评论的获取方法和数据分析过程,本次将详细讲解B站弹幕爬取原理解析,这里讲解最简单的获取b站弹幕的方法,但也有局限性,仅仅获取了当日的弹幕,但当我再次尝试后,403了,以后再尝试改进吧。可以先看看这个爬取冰冰B站千条评论,看看大家说了什么@[toc] 原理 概念cid : 爬取弹幕需要的id号,可以由BV号通过API接口获得 步骤以==冰冰第一条...

Python利用B站弹幕制作词云图

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

在这里插入图片描述

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

@[toc]

原理

概念

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

实际案例

import requests
import json
from urllib import parse

获取视频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'])

词云图

在这里插入图片描述

推荐阅读:

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

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


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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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

举报
请填写举报理由
0/200