python 实现bilibili直播间语音播报
-
使用爬虫工具: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')
-
-
语音播放
-
使用工具:pyttsx3
engine = pyttsx3.init() engine.say(message) engine.runAndWait()
-
-
整体代码
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()