Bootstrap

Python Spider-dy实时弹幕监听与记录系统的实现

目录

项目背景

技术栈

完整源码

代码解析

1. 初始化浏览器和数据记录器

2. 注入 JavaScript 代码

3. 监听弹幕

4. 记录弹幕

5. 自动关闭

6. 主函数

应用场景

总结


在当今的直播平台上,弹幕作为观众与主播互动的重要方式,承载着观众的反馈与情感。为了更好地分析这些互动数据,我们可以构建一个实时弹幕监听与记录系统。本文将介绍如何使用 Python 和 DrissionPage 库实现这一系统,并将弹幕数据记录到日志文件和 CSV 文件中。

项目背景

在直播过程中,观众通过弹幕与主播进行互动,表达他们的情感和反馈。记录这些弹幕不仅可以帮助分析观众的反馈,还可以用于后续的数据处理和研究。因此,构建一个能够实时监听和记录弹幕的系统显得尤为重要。

技术栈

本项目使用以下技术栈:

  • Python:作为主要编程语言。
  • DrissionPage:用于自动化浏览器操作。
  • loguru:用于日志记录。
  • DataRecorder:用于记录弹幕数据到 CSV 文件。

完整源码

以下是实现弹幕监听与记录系统的完整代码:

from DrissionPage import Chromium, ChromiumOptions
from loguru import logger
from DataRecorder import Recorder
import time
from datetime import datetime
import threading

# 背景:在直播平台上,弹幕是观众与主播互动的重要方式。记录这些弹幕不仅可以帮助分析观众的反馈,还可以用于后续的数据处理和研究。

# 配置日志输出到文件
logger.add('danmu_log.txt', rotation='100 MB', encoding='utf-8', level='INFO', format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}")

# 日志将输出到 danmu_log.txt 文件中。
# 文件大小达到 100 MB 时会自动轮转。
# 日志的编码为 UTF-8,以支持中文字符。
# 日志级别设置为 INFO,记录的信息包括时间、级别和消息内容。

# 常量
URL = 'https://live.douyin.com/457498878860'
CLOSE_DELAY = 90  # 关闭延迟时间(秒)


# 功能:该函数用于初始化浏览器并设置相关选项。
def init_browser():
    """初始化浏览器并配置选项"""
    options = ChromiumOptions()
    options.headless(False)
    options.set_argument('--disable-infobars')
    options.set_argument('--no-sandbox')
    options.set_argument('--disable-dev-shm-usage')
    return Chromium()

# 使用 ChromiumOptions 来配置浏览器选项。
# headless(False) 表示以可视化模式运行浏览器。
# 其他选项如 --disable-infobars 和 --no-sandbox 用于提高浏览器的稳定性和安全性。


def init_recorder():
    """初始化 DataRecorder 并设置表头 初始化数据记录器,用于保存弹幕数据。"""
    recorder = Recorder('danmu_records.csv')
    recorder.add_data(['时间', '弹幕内容'])
    return recorder

#
;