主頁 > 知識(shí)庫 > 使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼

使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼

熱門標(biāo)簽:滴滴地圖標(biāo)注公司 智能電話機(jī)器人調(diào)研 杭州房產(chǎn)地圖標(biāo)注 甘肅高頻外呼系統(tǒng) 如何申請(qǐng)400電話代理 地圖標(biāo)注可以遠(yuǎn)程操作嗎 400電話在線如何申請(qǐng) 天津塘沽區(qū)地圖標(biāo)注 江門智能電話機(jī)器人

項(xiàng)目地址

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

開發(fā)工具 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'
  # 請(qǐng)求頭
  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傳遞的參數(shù)
  self.data = {
   'roomid': room_id,
   'csrf_token': '',
   'csrf': '',
   'visit_id': '',
  }
  # 日志寫對(duì)象
  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']
   # 獲取發(fā)言
   text = content['text']
   # 獲取發(fā)言時(shí)間
   timeline = content['timeline']
   # 記錄發(fā)言
   msg = timeline + ' ' + nickname + ': ' + text
   # 判斷對(duì)應(yīng)消息是否存在于日志,如果和最后一條相同則打印并保存
   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):
 # 創(chuàng)建bDanmu實(shí)例
 bDanmu = Danmu(room_id)
 while True:
  # 暫停防止cpu占用過高
  time.sleep(delay)
  # 獲取彈幕
  bDanmu.get_danmu()


def author():
 # 彈出對(duì)話框
 messagebox.showinfo(title='關(guān)于', message='作者:阿壯Jonson\n日期:2021年2月4日\n微信公眾號(hào):科技貓')


# 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='關(guān)于', command=author)
# 創(chuàng)建菜單欄完成后,配置讓菜單欄menubar顯示出來
window.config(menu=menubar)

# 滾動(dòng)條
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)
# 滾動(dòng)條動(dòng),列表跟著動(dòng)
sc.config(command=listb.yview)

# 獲取字符串(標(biāo)題,提示,初始值)
room_id = simpledialog.askstring(title='請(qǐng)輸入房間號(hào)', prompt='請(qǐng)輸入房間號(hào):'
         , initialvalue='21089733')
if room_id is not None:
 # 創(chuàng)建獲取彈幕線程
 try:
  t = threading.Thread(target=bilibili, args=(0.5, str(room_id),))
  t.setDaemon(True)
  t.start()
 except:
  print("Error: 啟動(dòng)失??!請(qǐng)檢查房間號(hào)是否正確")
# 進(jìn)入循環(huán)顯示
window.mainloop()

編譯

使用第三方包:pyinstaller

命令

pyinstaller -F -w bilibli-danmu.py

參數(shù)解釋

-F,-onefile 產(chǎn)生單個(gè)的可執(zhí)行文件

-w,--windowed,--noconsolc 指定程序運(yùn)行時(shí)不顯示命令行窗口(僅對(duì) Windows 有效) PyInstaller 支持的常用選項(xiàng)

補(bǔ)充

執(zhí)行完命令之后會(huì)在項(xiàng)目目錄下多出dist文件夾,編譯后的文件就在該文件夾下 pyinstaller 不可以跨平臺(tái)編譯,windows平臺(tái)下只能編譯成windows下的執(zhí)行文件(.exe),同理mac linux也是一樣

到此這篇關(guān)于使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕的工具的文章就介紹到這了,更多相關(guān)python tkinter開發(fā)B站直播彈幕工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python基于Tkinter開發(fā)一個(gè)爬取B站直播彈幕的工具
  • python基于selenium爬取斗魚彈幕
  • Python爬蟲自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法
  • 詳解python爬取彈幕與數(shù)據(jù)分析
  • Python爬蟲爬取Bilibili彈幕過程解析
  • python3寫爬取B站視頻彈幕功能
  • Python繪制詞云圖之可視化神器pyecharts的方法
  • python中實(shí)現(xiàn)詞云圖的示例
  • Python實(shí)現(xiàn)Wordcloud生成詞云圖的示例
  • Python爬取英雄聯(lián)盟MSI直播間彈幕并生成詞云圖

標(biāo)簽:漢中 重慶 河池 廊坊 長(zhǎng)春 臨汾 東莞 德宏

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼》,本文關(guān)鍵詞  使用,python,tkinter,開發(fā),一個(gè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章