python bilibili评论播报

python 实现bilibili直播间语音播报

  1. 使用爬虫工具:selenium
    • 设置登入信息

      • 获取浏览器登入信息
        在这里插入图片描述

      • 设置登入信息:

        from selenium import webdriver
        from selenium.webdriver.chrome.options import Options
        chrome_options = Options()
        user_info = r"C:\Users\iewv-nyaj\AppData\Local\Google\Chrome\User Data"
        chrome_options.add_argument("--user-data-dir={}".format(user_info))
        
    • 设置无头模式

       chrome_options.add_argument("--headless")
      
    • 实例化进行爬取

      url="https://live.bilibili.com/1952674696"
      driver = webdriver.Chrome(options=chrome_options)
      driver.get(url)
      
    • Xpath元素获取

      head_name = self.driver.find_elements(By.XPATH,'//*[@id="rank-list-ctnr-box"]/div[2]/div/div[1]/div/div/div[2]/div')
      
  2. 语音播放

    • 使用工具:pyttsx3

      engine = pyttsx3.init()
      engine.say(message)
      engine.runAndWait()
      
  3. 整体代码

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.chrome.options import Options
    import pyttsx3
    import time
    
    
    
    class Get_Live(object):
        def __init__(self,objectss=0,url="https://live.bilibili.com/1952674696"):
            super().__init__()
            self.engine = pyttsx3.init()
            chrome_options = Options()
            chrome_options.add_argument("--headless")
            user_info = r"C:\Users\iewv-nyaj\AppData\Local\Google\Chrome\User Data"
            chrome_options.add_argument("--user-data-dir={}".format(user_info))
            self.driver = webdriver.Chrome(options=chrome_options)
            self.driver.get(url)
            self.deict_list = []
            self.user_info = []
    
            # self.root = objectss
    
        def get_mess(self,*args):
            while True:
                time.sleep(1)
                Hmtl_list = self.driver.find_elements(By.XPATH, '//*[@id="chat-items"]/div')
                Hmtl_list = Hmtl_list[len(self.deict_list):]
    
                head_img = self.driver.find_elements(By.XPATH, '//*[@id="rank-list-ctnr-box"]/div[2]/div/div[1]/div/div/div[1]')
                # print(i.get_attribute("style"))
                head_name = self.driver.find_elements(By.XPATH,
                                                    '//*[@id="rank-list-ctnr-box"]/div[2]/div/div[1]/div/div/div[2]/div')
    
                # img_mo = [i.get_attribute(i) for i in head_img]
                user_mo = [i.text for i in head_name]
                # print(user_mo, self.user_info)
                for i in user_mo:
                    # print(i)
                    if i not in self.user_info:
                        # print()
                        print("欢迎"+i+"小可爱进入直播间")
                        self.view_mp3("欢迎"+i+"小可爱进入直播间")
    
                self.user_info = user_mo
    
    
    
    
                for i in Hmtl_list:
                    self.deict_list.append(i)
                    if i.get_attribute("data-uname") and i.get_attribute("data-danmaku"):
                        # self.root.message_box.add_widget(Message_Class(i.get_attribute("data-uname"),i.get_attribute("data-danmaku")))
    
    
                        nmae = i.get_attribute("data-uname") + "说" + i.get_attribute("data-danmaku")
                        # self.root.listsss.append({"user":i.get_attribute("data-uname"), "message":i.get_attribute("data-danmaku")})
                        print(nmae)
                        self.view_mp3(nmae)
    
        def view_mp3(self, message):
            self.engine.say(message)
            self.engine.runAndWait()
    
    
    
    
    if __name__ == '__main__':
        lg = Get_Live()
    
        while True:
            lg.get_mess()
    
    

    if name == ‘main’:
    lg = Get_Live()

    while True:
        lg.get_mess()
    
    
    
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值