Python得到弹幕并保存到Excel中怎么设置

下面我将为你详细讲解Python如何获取弹幕并保存到Excel中。这个过程大致可以分为两个步骤:

  1. 获取弹幕数据

弹幕从哪里来?我们可以通过访问一些弹幕网站,例如B站或Acfun网站,获取弹幕数据。这里我以B站为例,首先我们需要找到弹幕API的地址,这里我们可以使用Fiddler等抓包工具,来获取弹幕信息相关的请求地址和参数。这里我提供一个B站获取弹幕API的地址,供大家参考:

https://api.bilibili.com/x/v1/dm/list.so?oid=弹幕视频编号

其中oid就是弹幕视频的编号,这个可以在B站网页版地址中获得。获取到地址后,我们就可以使用Python中的requests库发起请求获取弹幕数据:

import requests
from bs4 import BeautifulSoup

url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=弹幕视频编号'
response = requests.get(url)
soup = BeautifulSoup(response.content,features="lxml")
danmu_items = soup.find_all('d')

在这个代码块中,我们使用requests库请求了弹幕数据的网址,然后解析了返回的XML数据,其中所有的弹幕数据都在<d></d>标签下,我们通过find_all方法来获取所有弹幕数据。这个过程需要使用BeautifulSoup库解析XML数据。

  1. 保存数据至Excel表格中

我们可以使用pandas库将弹幕数据保存至Excel表格中。代码如下:

import pandas as pd

danmu_dict = {'danmu_text': [], 'danmu_time': []}
for item in danmu_items:
    danmu_text = item.text
    danmu_time = item['p'].split(',')[0]
    danmu_dict['danmu_text'].append(danmu_text)
    danmu_dict['danmu_time'].append(danmu_time)

df = pd.DataFrame(danmu_dict)
df.to_excel('danmu.xlsx', index=False)

在这个代码块中,我们首先会将弹幕数据整理成一个字典格式的数据,然后使用pandas.DataFrame方法将数据转化为DataFrame格式。最后使用DataFrame.to_excel方法将数据保存至Excel表格中。在这个例子中,我们只保存了弹幕文本和弹幕时间,其他的一些元数据没有进行保存。

示例说明一:

以上的代码是获取弹幕,提取其中的时间和文本内容,并以Excel的形式保存所有数据,将数据保存到本地。但是,如果你想要实时获取弹幕并将其保存到Excel表格中,或者想要对不同弹幕类型进行分类统计,这个过程还需要进一步改进。

示例说明二:

针对以上问题,我们可以考虑使用WebSocket协议来实现动态弹幕的获取。接下来的代码示例使用Websocket实时获取B站直播弹幕,对弹幕进行了简单的文本分类,输出不同类型弹幕的数量并保存至Excel表格中。

import websocket
import json
import pandas as pd

danmu_dict = {'time':[], 'type':[], 'content':[]}

def on_message(ws, message):
    payload = json.loads(json.loads(message)[0]['data'])   
    if payload['cmd'] == 'DANMU_MSG':     
        time, dn_type, content = payload['info'][0], payload['info'][1][2], payload['info'][1][1]
        danmu_dict['time'].append(time)
        danmu_dict['type'].append(dn_type)
        danmu_dict['content'].append(content)
        print(f'{time}\t{dn_type}\t{content}') 

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")

def on_open(ws):
    ws.send('{"type": "loginreq","roomid": 直播房间号}')
    ws.send('{"type": "joingroup","rid": 直播房间号, "gid": -9999)')
    print('已经成功连接至Websocket服务器')

if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("wss://broadcastlv.chat.bilibili.com:2245/sub")
    ws.on_open = on_open
    ws.on_message = on_message
    ws.on_error = on_error
    ws.on_close = on_close
    ws.run_forever()

    df = pd.DataFrame(danmu_dict)
    type_count = df.groupby('type').count()['content']

    print(type_count)
    df.to_excel('danmu.xlsx', index=False)

可以看到,以上代码使用了Websocket实时获取弹幕数据,并针对不同类型的文本弹幕信息进行了统计,并将获取到的数据保存至Excel表格中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python得到弹幕并保存到Excel中怎么设置 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python中的random.uniform()函数教程与实例解析

    Python中的random.uniform()函数教程与实例解析 介绍 random.uniform() 方法是 Python 内置的生成一个指定范围内的随机浮点数的函数。如果我们需要在指定的范围内产生一个随机浮点数,这个函数肯定会派上用场。 语法 random.uniform(a, b)函数接收两个参数:* a:随机数范围的起始点* b:随机数范围的结束…

    python 2023年6月3日
    00
  • Python中列表索引 A[ : 2 ]与A[ : , 2]的区别说明

    在Python中,列表索引是一种常用的操作,可以用来访问和修改列表中的元素。在列表索引中,A[:2]和A[:,2]是两种常见的用法,它们的区别如下: A[:2]表示访问列表A中前两个元素,返回一个包含前两个元素的新列表。 A[:,2]表示访问列表A中第三列的所有元素,返回一个包含第三列所有元素的新列表。 下面是两个示例说明: 示例1:访问前两个元素 # 定义…

    python 2023年5月13日
    00
  • Python 如何给图像分类(图像识别模型构建)

    下面是我的完整回答。 一、简介 图像分类是指在训练样本的基础上,通过构建分类模型实现对新输入图像进行分类的技术。在机器学习领域,图像分类是一类非常重要的应用场景,而Python作为一种非常流行的编程语言,也具备非常优秀的图像处理和机器学习的能力。本文将详细讲解如何使用Python进行图像分类。 二、图像分类的过程 1. 数据准备 在进行图像分类之前,首先需要…

    python 2023年5月19日
    00
  • python异步实现定时任务和周期任务的方法

    当我们使用 Python 编写 Web 应用或者其他需要接受或传递大量请求的程序时,异步编程已经变得越来越重要。异步编程可以同时处理多个请求,提高程序运行效率,并且还可以实现定时任务和周期任务。 前置知识 在学习 Python 异步编程之前,需要先了解以下基础知识: 常用的 Python 异步库:asyncio,aiohttp,asyncpg。 async/…

    python 2023年6月3日
    00
  • Python必考的5道面试题集合

    Python必考的5道面试题集合攻略 Python的应用越来越广泛,越来越多的公司开始了解和使用Python。因此,掌握Python编程语言已经成为很多求职者必须具备的技能之一。在Python面试中,一些问题会被经常提及。本篇文章将逐一介绍Python必考的5道面试题,并提供详细的解答。 面试题目1:Python中的变量类型有哪些? Python中的变量类型…

    python 2023年5月13日
    00
  • python 检测图片是否有马赛克

    要检测图片是否有马赛克,可以采用以下步骤: 1.导入相关模块 首先,需要导入Python Pillow库和Numpy库。Pillow库是Python中用于处理图片的第三方库,Numpy是Python中用于科学计算的库。 from PIL import Image import numpy as np 2.载入图片并转换为Numpy数组 使用Pillow库中的…

    python 2023年5月18日
    00
  • 详解python中的生成器、迭代器、闭包、装饰器

    一、生成器 生成器(Generator)是一种用于创建迭代器的简单而强大的工具。生成器函数就是普通函数,只不过使用了yield语句而不是return语句返回结果。生成器函数被调用时不会立即执行函数体,而是返回一个迭代器。每次调用迭代器的next()方法时,生成器函数会从上次执行的地方继续执行,直到遇到一个yield语句,然后把yield后面的表达式的值作为返…

    python 2023年6月3日
    00
  • Python中字典的setdefault()方法教程

    标题:Python中字典的setdefault()方法教程 什么是字典的setdefault()方法? Python中的字典是一种可变的、无序的、键-值对集合,它是Python中最常用的数据结构之一。字典的setdefault()方法是一个字典类型中的方法,用于获取指定键的值。如果键不存在,则插入一个键-值对并返回默认值。 setdefault()方法的语法…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部