今天我们来实现“中国音乐电视”节目的播放。
网址:'https://www.xuexi.cn/7491fb94af7a78e7490869bdaf2fa207/468223f4d6bc2ddce2e2e280a69f422b.html'
1.首先,模拟打开网址。
browse.get('https://www.xuexi.cn/7491fb94af7a78e7490869bdaf2fa207/468223f4d6bc2ddce2e2e280a69f422b.html')
2.然后,检查列表方式,选定“list”方式。
if browse.find_element(By.CSS_SELECTOR, 'span.list'): browse.find_element(By.CSS_SELECTOR, 'span.list').click()
3.搜索“节目”清单。
list_1 = browse.find_elements(By.CSS_SELECTOR,'div.text-link-item-title')
4.采用FOR循环的方式,逐一播放。
for i in range(len(list_1))
5.单一节目播放。
title = list_1[i].find_element(By.CSS_SELECTOR, '.text-wrap .text').text list_1[i].find_element(By.CSS_SELECTOR, '.text-wrap .text').click() all_window_handles = browse.window_handles browse.switch_to.window(all_window_handles[-1]) time.sleep(2) print(f"视频:", title) browse.execute_script("window.scrollTo(0, document.body.scrollHeight / (100/27));") while browse.find_elements(By.CSS_SELECTOR, '.prism-big-play-btn.playing'): time.sleep(1) browse.close() browse.switch_to.window(all_window_handles[-2])
效果如下:
代码奉上:
import time from selenium import webdriver from selenium.webdriver.common.by import By import re import datetime
def music_tv(browse): print('版块:中国音乐电视') browse.get('https://www.xuexi.cn/7491fb94af7a78e7490869bdaf2fa207/468223f4d6bc2ddce2e2e280a69f422b.html') # 歌曲大家唱 time.sleep(1) if browse.find_element(By.CSS_SELECTOR, 'span.list'): browse.find_element(By.CSS_SELECTOR, 'span.list').click() time.sleep(1) page_info = browse.find_element(By.CSS_SELECTOR, 'div._123TewfUWxUbDqs5ecsq6k') if page_info: list_page = page_info.find_elements(By.CSS_SELECTOR, '.btn') page_end = int(list_page[-1].text) page = 1 while page <= page_end: list_1 = browse.find_elements(By.CSS_SELECTOR,'div.text-link-item-title')[19:] for i in range(len(list_1)): title = list_1[i].find_element(By.CSS_SELECTOR, '.text-wrap .text').text list_1[i].find_element(By.CSS_SELECTOR, '.text-wrap .text').click() all_window_handles = browse.window_handles browse.switch_to.window(all_window_handles[-1]) time.sleep(2) print(f"视频:", title) browse.execute_script("window.scrollTo(0, document.body.scrollHeight / (100/27));") while True: play_flag = browse.find_elements(By.CSS_SELECTOR, '.prism-big-play-btn.playing') if play_flag: time.sleep(1) else: browse.close() browse.switch_to.window(all_window_handles[-2]) break page += 1 list_page = page_info.find_elements(By.CSS_SELECTOR, '.btn') for page_ in list_page: if page_.text == str(page): page_.click() break time.sleep(1)
browse = webdriver.Edge() browse.maximize_window() # 窗口最大化 browse.implicitly_wait(30) music_tv(browse)