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

yizhihongxing

下面我将为你详细讲解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 模块存储库

    【问题标题】:Python Module RepositoryPython 模块存储库 【发布时间】:2023-04-01 03:38:01 【问题描述】: 我正在寻找类似于 perl 在 python 中的Dumper 功能的东西。所以在谷歌搜索后,我找到了一个对我有用的@@https://gist.github.com/1071857#file_dump…

    Python开发 2023年4月8日
    00
  • Windows系统配置python脚本开机启动的3种方法分享

    下面是关于 “Windows系统配置python脚本开机启动的3种方法分享”的详细攻略。 方法一:使用Windows任务计划程序 Windows任务计划程序是在指定的时间自动运行指定任务的Windows内置功能。通过它,我们可以在开机或某个特定时间点运行python脚本。步骤如下: 打开任务计划程序,可以通过在Windows搜索栏,输入“任务计划程序”找到它…

    python 2023年5月19日
    00
  • 对Python正则匹配IP、Url、Mail的方法详解

    对Python正则匹配IP、Url、Mail的方法详解 在Python中,我们可以使用正则表达式来匹配IP、Url、Mail等常见的文本格式。正则表达式是一种强大的文本处理工具,可以用来匹配、查找、替换、分割等。本攻略将详细讲解Python正则IP、Url、Mail的方法,包括函数的用法、参数及值等。 正则表达式的基本语法 在正则表达式中,我们可以使用一些特…

    python 2023年5月14日
    00
  • python利用Appium实现自动控制移动设备并提取数据功能

    Python利用Appium实现自动控制移动设备并提取数据功能 什么是Appium? Appium 是一个开源的自动化测试框架,用于测试移动应用程序,可以支持多种移动操作系统和编程语言,包括 iOS、Android、Windows等系统和Java、Python等编程语言。 实现自动化控制移动设备需要准备的工具 安装 Appium Server 安装 Pyth…

    python 2023年6月5日
    00
  • python实现停车管理系统

    Python实现停车管理系统 简介 停车管理系统是一种常用的车辆管理系统,可以对车辆进行入库、出库、计费等操作,被广泛应用于各类停车场、停车库等场所。Python是一种功能强大的编程语言,它可以通过编写简单明了的程序来实现停车管理系统。 步骤 1. 确定需求 在开始编写停车管理系统之前,我们需要确定需要实现哪些功能,例如: 车辆入库操作 车辆出库操作 车辆计…

    python 2023年5月30日
    00
  • 在 Python 与 C 中打印空字符(“\x00”)

    【问题标题】:Printing Null Character (“\x00”) in Python vs C在 Python 与 C 中打印空字符(“\x00”) 【发布时间】:2023-04-06 20:29:02 【问题描述】: 当我编写代码并运行语句时: print “\x00\x00\x00” 在 Python 中,它输出三个空格,后跟一个换行符。但…

    Python开发 2023年4月7日
    00
  • python从入门到精通(DAY 3)

    Python从入门到精通(DAY 3)攻略 在这篇文章中,我们将讨论《Python从入门到精通》的第三天学习内容,包括: 字符串的基本操作 字符串切片 字符串的常用方法 如果您已经掌握了Python的基础语法,下面我们将带您详细了解这些内容。 字符串的基本操作 在Python中,用单引号或双引号来表示一个字符串。例如: str1 = ‘hello world…

    python 2023年5月13日
    00
  • Python 命令行非阻塞输入的小例子

    这里是 Python 命令行非阻塞输入的小例子的完整攻略。 什么是命令行的阻塞输入 在命令行下运行 Python 时,我们通常使用 input() 函数从标准输入中读取数据。input() 会阻塞程序的执行,直到用户输入了数据并按下了回车键。 这种阻塞输入的方式有利有弊。它简单易用,不需要复杂的异步编程技巧。但是它会让程序在读取输入等待用户的响应时,不能执行…

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