电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

相關文章:
主站蜘蛛池模板: 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 学生作文网_中小学生作文大全与写作指导 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 水成膜泡沫灭火剂_氟蛋白泡沫液_河南新乡骏华消防科技厂家 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 电子天平-华志电子天平厂家 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 广州昊至泉水上乐园设备有限公司| 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 深圳品牌设计公司-LOGO设计公司-VI设计公司-未壳创意 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 淘剧影院_海量最新电视剧,免费高清电影随心观看| 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 818手游网_提供当下热门APP手游_最新手机游戏下载 | 比亚迪叉车-比亚迪电动叉车堆垛车托盘车仓储叉车价格多少钱报价 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 福州甲醛检测-福建室内空气检测_环境检测_水质检测-福建中凯检测技术有限公司 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 |