婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用python tkinter開發一個爬取B站直播彈幕工具的實現代碼

使用python tkinter開發一個爬取B站直播彈幕工具的實現代碼

熱門標簽:滴滴地圖標注公司 智能電話機器人調研 杭州房產地圖標注 甘肅高頻外呼系統 如何申請400電話代理 地圖標注可以遠程操作嗎 400電話在線如何申請 天津塘沽區地圖標注 江門智能電話機器人

項目地址

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 tkinter開發一個爬取B站直播彈幕工具的實現代碼》,本文關鍵詞  使用,python,tkinter,開發,一個,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用python tkinter開發一個爬取B站直播彈幕工具的實現代碼》相關的同類信息!
  • 本頁收集關于使用python tkinter開發一個爬取B站直播彈幕工具的實現代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 呼和浩特市| 秭归县| 辛集市| 绿春县| 兴和县| 平安县| 嘉鱼县| 徐闻县| 陕西省| 西丰县| 陵川县| 青海省| 盐源县| 宿州市| 饶阳县| 盐山县| 沽源县| 林州市| 南开区| 光山县| 淅川县| 曲松县| 崇信县| 惠水县| 吴堡县| 弥勒县| 松原市| 洱源县| 南城县| 赤城县| 辽中县| 清苑县| 湛江市| 思南县| 辽阳市| 固安县| 花莲县| 四平市| 辽源市| 乐都县| 昆山市|