亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python基于Tkinter開發一個爬取B站直播彈幕的工具

瀏覽:5日期:2022-06-20 14:26:45
簡介

使用Python Tkinter開發一個爬取B站直播彈幕的工具,啟動后在彈窗中輸入房間號即可,彈幕內容會保存在腳本文件同級目錄下的.log擴展名的文件中

開發工具 python 3.7.9 pycharm 2019.3.5實現代碼

import threadingimport timeimport tkinter.simpledialog # 使用Tkinter前需要先導入from tkinter import END, messageboximport requests# 全局變量,用于標識線程是否退出is_exit = True# B站獲取彈幕對象class Danmu(): def __init__(self, room_id):# 彈幕urlself.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(room_id): # 創建bDanmu實例 bDanmu = Danmu(room_id) # 獲取彈幕 bDanmu.get_danmu()class BilibiliThread(threading.Thread): def __init__(self, room_id=None):threading.Thread.__init__(self)self.room_id = room_id # 重寫run()方法 def run(self):global is_exitwhile not is_exit: print(self.room_id) bilibili(self.room_id) # 暫停防止cpu占用過高 time.sleep(0.5)def author(): # 彈出對話框 messagebox.showinfo(title=’關于’, message=’作者:阿壯Jonsonn日期:2021年2月4日n微信公眾號:科技貓’)# 實例化object,建立窗口windowwindow = 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)# 創建一個主frame,長在主window窗口上frame = tkinter.Frame(window)frame.pack()# 創建第二層框架frame,長在主框架frame上面# 上frame_t = tkinter.Frame(frame)# 下frame_b = tkinter.Frame(frame)frame_t.pack(side=tkinter.TOP)frame_b.pack(side=tkinter.BOTTOM)# 創建標簽tkinter.Label(frame_t, text=’請輸入房間號:’, width=10, font=(’Arial’, 10)).pack(side=tkinter.LEFT)# 顯示成明文形式default_text = tkinter.StringVar()default_text.set('21089733')e1 = tkinter.Entry(frame_t, show=None, width=15, textvariable=default_text, font=(’Arial’, 10))e1.pack(side=tkinter.LEFT)# 定義兩個觸發事件時的函數start_point和end_point(注意:因為Python的執行順序是從上往下,所以函數一定要放在按鈕的上面)# 開始def start_point(): try:room = e1.get()room_int = int(room)e1.configure(state=tkinter.DISABLED)b1.configure(state=tkinter.DISABLED)b2.configure(state=tkinter.NORMAL)if room_int is not None: global is_exit is_exit = False t = BilibiliThread() t.room_id = room_int # 創建獲取彈幕線程 t.setDaemon(True) t.start() except ValueError:messagebox.showinfo(title=’警告’, message=’輸入的房間號格式不正確,請再次嘗試輸入!’)# 停止def end_point(): global is_exit is_exit = True e1.configure(state=tkinter.NORMAL) b1.configure(state=tkinter.NORMAL) b2.configure(state=tkinter.DISABLED)# 創建并放置兩個按鈕分別觸發兩種情況b1 = tkinter.Button(frame_t, text=’開始’, width=10, command=start_point, font=(’Arial’, 10))b1.pack(side=tkinter.LEFT)b2 = tkinter.Button(frame_t, text=’停止’, width=10, command=end_point, font=(’Arial’, 10))b2.pack(side=tkinter.LEFT)# 滾動條sc = tkinter.Scrollbar(frame_b)sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)# Listbox控件listb = tkinter.Listbox(frame_b, yscrollcommand=sc.set, width=200, height=120)# 將部件放置到主窗口中listb.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True)# 滾動條動,列表跟著動sc.config(command=listb.yview)# 主窗口循環顯示window.mainloop()爬取效果

Python基于Tkinter開發一個爬取B站直播彈幕的工具

Github地址:

https://github.com/jonssonyan/bilibli-danmu

以上就是Python Tkinter開發一個爬取B站直播彈幕的工具的詳細內容,更多關于Python 爬取B站直播彈幕的資料請關注好吧啦網其它相關文章!

相關文章:
主站蜘蛛池模板: 香蕉久久夜色精品国产2020 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久乐国产精品亚洲综合m3u8 | 国产精品毛片一区二区三区 | 国产精品美女福利视频一区 | 亚洲精品区在线播放一区二区 | 国产一区二区三区精品久久呦 | 免费一级毛片在播放视频 | 91小视频在线观看免费版高清 | 精品欧美一区二区在线看片 | 黑人巨大两根一起挤进来 | 久久亚洲这里只有精品18 | 成人在线视频网站 | 亚洲精品一区二区三区在 | 久久久久久久久女黄9999 | 在线观看麻豆国产精品 | 国产一区a | 久久精品免费 | 日本道色综合久久影院 | 亚洲欧美精品久久 | 国产精品亚洲欧美日韩久久 | 麻豆传媒2021精品传媒一区 | 欧美成人亚洲高清在线观看 | 日韩免费无砖专区2020狼 | 国产xxxx色视频在线观看14 | 久久久国产精品va麻豆 | 国产精品αv在线观看 | 一级黄色毛片子 | 黄色片网站在线免费观看 | 国产精品亚洲欧美日韩区 | 黄黄视频在线观看 | 男女做a一级视频免费观看 男女喷水视频 | 亚洲人xx视频 | 亚洲一区二区视频在线观看 | 曰韩美女一级视频 | 黄色片在线免费 | 亚洲精品在线免费 | 亚洲欧美在线综合一区二区三区 | 精品在线免费播放 | 精品欧美成人高清视频在线观看 | 久久久久久久亚洲精品一区 |