• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用python tkinter开发一个爬取B站直播弹幕工具的实现代码

    项目地址

    https://github.com/jonssonyan...

    开发工具 python 3.7.9

    pycharm 2019.3.5 代码

    import threading
    import time
    import tkinter.simpledialog
    from tkinter import END, simpledialog, messagebox
    
    import requests
    
    
    class Danmu():
     def __init__(self, room_id):
      # 弹幕url
      self.url = 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory'
      # 请求头
      self.headers = {
       'Host': 'api.live.bilibili.com',
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
      }
      # 定义POST传递的参数
      self.data = {
       'roomid': room_id,
       'csrf_token': '',
       'csrf': '',
       'visit_id': '',
      }
      # 日志写对象
      self.log_file_write = open('danmu.log', mode='a', encoding='utf-8')
      # 读取日志
      log_file_read = open('danmu.log', mode='r', encoding='utf-8')
      self.log = log_file_read.readlines()
    
     def get_danmu(self):
      # 暂停0.5防止cpu占用过高
      time.sleep(1)
      # 获取直播间弹幕
      html = requests.post(url=self.url, headers=self.headers, data=self.data).json()
      # 解析弹幕列表
      for content in html['data']['room']:
       # 获取昵称
       nickname = content['nickname']
       # 获取发言
       text = content['text']
       # 获取发言时间
       timeline = content['timeline']
       # 记录发言
       msg = timeline + ' ' + nickname + ': ' + text
       # 判断对应消息是否存在于日志,如果和最后一条相同则打印并保存
       if msg + '\n' not in self.log:
        # 打印消息
        listb.insert(END, msg)
        listb.see(END)
        # 保存日志
        self.log_file_write.write(msg + '\n')
        # 添加到日志列表
        self.log.append(msg + '\n')
       # 清空变量缓存
       nickname = ''
       text = ''
       timeline = ''
       msg = ''
    
    
    def bilibili(delay, room_id):
     # 创建bDanmu实例
     bDanmu = Danmu(room_id)
     while True:
      # 暂停防止cpu占用过高
      time.sleep(delay)
      # 获取弹幕
      bDanmu.get_danmu()
    
    
    def author():
     # 弹出对话框
     messagebox.showinfo(title='关于', message='作者:阿壮Jonson\n日期:2021年2月4日\n微信公众号:科技猫')
    
    
    # tkinter GUI
    window = tkinter.Tk()
    window.title('BiliBli弹幕查看工具')
    window.minsize(300, 500)
    window.geometry('400x600+250+100')
    
    # 菜单栏
    menubar = tkinter.Menu(window)
    # Open放在菜单栏中,就是装入容器
    menubar.add_command(label='关于', command=author)
    # 创建菜单栏完成后,配置让菜单栏menubar显示出来
    window.config(menu=menubar)
    
    # 滚动条
    sc = tkinter.Scrollbar(window)
    sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    # Listbox控件
    listb = tkinter.Listbox(window, yscrollcommand=sc.set)
    # 将部件放置到主窗口中
    listb.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True)
    # 滚动条动,列表跟着动
    sc.config(command=listb.yview)
    
    # 获取字符串(标题,提示,初始值)
    room_id = simpledialog.askstring(title='请输入房间号', prompt='请输入房间号:'
             , initialvalue='21089733')
    if room_id is not None:
     # 创建获取弹幕线程
     try:
      t = threading.Thread(target=bilibili, args=(0.5, str(room_id),))
      t.setDaemon(True)
      t.start()
     except:
      print("Error: 启动失败!请检查房间号是否正确")
    # 进入循环显示
    window.mainloop()

    编译

    使用第三方包:pyinstaller

    命令

    pyinstaller -F -w bilibli-danmu.py

    参数解释

    -F,-onefile 产生单个的可执行文件

    -w,--windowed,--noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效) PyInstaller 支持的常用选项

    补充

    执行完命令之后会在项目目录下多出dist文件夹,编译后的文件就在该文件夹下 pyinstaller 不可以跨平台编译,windows平台下只能编译成windows下的执行文件(.exe),同理mac linux也是一样

    到此这篇关于使用python tkinter开发一个爬取B站直播弹幕的工具的文章就介绍到这了,更多相关python tkinter开发B站直播弹幕工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python基于Tkinter开发一个爬取B站直播弹幕的工具
    • python基于selenium爬取斗鱼弹幕
    • Python爬虫自动化爬取b站实时弹幕实例方法
    • 详解python爬取弹幕与数据分析
    • Python爬虫爬取Bilibili弹幕过程解析
    • python3写爬取B站视频弹幕功能
    • Python绘制词云图之可视化神器pyecharts的方法
    • python中实现词云图的示例
    • Python实现Wordcloud生成词云图的示例
    • Python爬取英雄联盟MSI直播间弹幕并生成词云图
    上一篇:python实现经典排序算法的示例代码
    下一篇:Pandas数据分析的一些常用小技巧
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用python tkinter开发一个爬取B站直播弹幕工具的实现代码 使用,python,tkinter,开发,一个,