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

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

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

瀏覽:2日期: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站直播彈幕的資料請關注好吧啦網其它相關文章!

相關文章:
主站蜘蛛池模板: 9久久免费国产精品特黄 | 欧美一级v片 | 亚洲 欧美 另类 综合 日韩 | 亚洲欧美日韩综合 | 日本亚洲精品无码专区 | 小明永久2015xxx免费看视频 | 丝袜网站在线观看 | 国产乱码视频 | 国产99视频精品免费观看9e | a资源在线观看 | 国产亚洲一区二区麻豆 | 日韩免费视频播放 | 一区二区三区网站在线免费线观看 | 色综合色狠狠天天久久婷婷基地 | 成熟亚洲妇女毛茸茸的性画廊 | 国产欧美精品一区二区三区 | 91精品麻豆 | 黄色网址入口 | 狠狠色丁香久久综合婷婷 | 中文字幕久久乱码一区二区 | 免费一级做a爰片性视频 | 女人毛片a级大学毛片免费 女人毛片在线 | 18到20岁女人毛片一区 | 91亚洲一区二区在线观看不卡 | 色播在线播放 | 韩国亚洲伊人久久综合影院 | 好好的曰www视频在线观看 | 毛片毛片毛片毛片毛片怎么 | 91成人免费观看网站 | 国产视频资源在线观看 | 情趣色视频网站 | 精品国产999| 亚洲人成网站在线在线 | 免费在线公开视频 | 99久在线 | 国产亚洲精品欧美一区 | 口国产成人高清在线播放 | 黄色片网站免费在线观看 | 国产成人免费视频 | 丝袜美足国产一区在线 | 日韩伦理亚洲欧美在线一区 |