学习强国——中国音乐

想要一首一首的播放音乐(歌曲、戏曲)怎么办呢?

下面,就以学习强国上播放”中国音乐“为例进行讲述:

网址:‘https://www.xuexi.cn/3f87e762ecb6a7da9e0a15bfaa84b339/5078e306c43bd30404897318853bbe45.html’

1.模拟器打开网址。

browse.get('https://www.xuexi.cn/3f87e762ecb6a7da9e0a15bfaa84b339/5078e306c43bd30404897318853bbe45.html')

2.定位搜索区域。

dingwei0 = browse.find_element(By.ID, '81d7')

3.搜索”中国音乐“的分类版块。

list0 = dingwei0.find_elements(By.CSS_SELECTOR, '.tab-item.center-item')

4.搜索分类版块中的专辑内容

list1 = browse.find_elements(By.CSS_SELECTOR, 'div.text-link-item-title span.text')

5.搜索专辑中的歌曲。

list2 = dingwei_1[0].find_elements(By.CSS_SELECTOR, '.album-songs li.album-list-item')

6.播放歌曲。

item2.find_element(By.CSS_SELECTOR, 'span.item-play').click()

持续时间:

while True:
    play_time_current = browse.find_element(By.CSS_SELECTOR,
                                            '.y-audio-player-main .y-audio-current').text
    play_time_total = browse.find_element(By.CSS_SELECTOR,
                                          '.y-audio-player-main .y-audio-total').text
    if play_time_current == play_time_total:
        try:
            browse.find_element(By.CSS_SELECTOR, '.y-audio-player-main .y-audio-pause').click()
        except:
            pass
        break
    time.sleep(1)

7.注意事项:

如果要播放的条目不在可视区域,需要及时向下滚动。即,每播放一条,执行一次下面代码:

browse.execute_script("window.scrollBy(0,48);")

8。完整代码:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import re
import datetime

browse = webdriver.Edge()
browse.maximize_window()  # 窗口最大化
browse.implicitly_wait(30)
print('版块:中国音乐')
browse.get('https://www.xuexi.cn/3f87e762ecb6a7da9e0a15bfaa84b339/5078e306c43bd30404897318853bbe45.html')
time.sleep(3)
first_handle = browse.current_window_handle
dingwei0 = browse.find_element(By.ID, '81d7')
list0 = dingwei0.find_elements(By.CSS_SELECTOR, '.tab-item.center-item')
for item in list0:
    print(item.text)
    item.click()
    time.sleep(1)
    all_handles = browse.window_handles
    browse.switch_to.window(all_handles[-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:
            list1 = browse.find_elements(By.CSS_SELECTOR, 'div.text-link-item-title span.text')
            for flag1 in range(len(list1)):
                title = list1[flag1].text
                print(title)
                list1[flag1].click()
                time.sleep(1)
                all_handles0 = browse.window_handles
                browse.switch_to.window(all_handles0[-1])
                time.sleep(1)
                browse.execute_script("window.scrollTo(0, document.body.scrollHeight / (100/30));")
                time.sleep(2)
                dingwei_1 = browse.find_elements(By.CSS_SELECTOR, '.album-wrap')
                if dingwei_1:
                    list2 = dingwei_1[0].find_elements(By.CSS_SELECTOR, '.album-songs li.album-list-item')
                    print('歌曲数量:', len(list2))
                    for flag, item2 in enumerate(list2):
                        # browse.execute_script(f"window.scrollTo(0, document.body.scrollHeight /({len(list2)+30}/{flag+13}));")
                        browse.execute_script("window.scrollBy(0,48);")
                        print(flag, item2.text)
                        item2.find_element(By.CSS_SELECTOR, 'span.item-play').click()
                        while True:
                            play_time_current = browse.find_element(By.CSS_SELECTOR,
                                                                    '.y-audio-player-main .y-audio-current').text
                            play_time_num = int(play_time_current.split(':')[0]) * 60 + int(play_time_current.split(':')[1])
                            play_time_total = browse.find_element(By.CSS_SELECTOR,
                                                                  '.y-audio-player-main .y-audio-total').text
                            # if play_time_current == play_time_total or play_time_num > 5:
                            if play_time_current == play_time_total:
                                try:
                                    browse.find_element(By.CSS_SELECTOR, '.y-audio-player-main .y-audio-pause').click()
                                except:
                                    pass
                                break
                            time.sleep(1)
                    browse.close()
                    browse.switch_to.window(all_handles0[-2])
                    time.sleep(1)
            page += 1
            list_page = page_info.find_elements(By.CSS_SELECTOR, '.btn')
            for page_info in list_page:
                if page_info.text == str(page):
                    page_info.click()
                    break
            time.sleep(1)
    browse.close()
    browse.switch_to.window(all_handles[-2])
    time.sleep(1)
  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值