爬取下载歌曲-动态方法

还是以这个网址为例:

歌曲宝-找歌就用歌曲宝-MP3音乐高品质在线免费下载

具体的原理之前也记录过,这里不作赘述,直接上源码

import time
from selenium import webdriver

def getlist(driver):#获取搜索结果
    list2 = []
    n = input("请输入歌名或歌手:")
    name = driver.find_element('xpath', '//*[@id="s-input"]')  # 输入框的位置
    name.send_keys("{}".format(n))  # 输入查询的内容
    a = driver.find_element('xpath', '//*[@id="search"]')  # “搜索”按钮的位置
    a.click()  # 点击
    time.sleep(3)  # 反应时间,等待网页刷新,也可以使用implicitly_wait()/WebDriverWait()方法设置等待时间
    list1 = driver.find_element('xpath', '/html/body/div[1]/div[2]/div')  # 搜索结果的位置
    # list2可以选择使用split进行分列表,这里只是单纯的进行换行,本质还是字符串
    list2 = list1.text.replace("\n", "").replace(" ", "").replace("歌曲", "").replace("播放", "").replace("下载","").replace("&搜索结果不是你想要的?", "").replace("&", "\n").replace("操作", "\n")
    with open("example.txt", "w", encoding="utf-8") as f:  # 可以选择保存,也可以直接忽略
        f.write(str(list2))
    print(list2)

def dowloadlr(driver):#下载某个歌曲的歌词
    count = int(input("请选择下载第几个:"))
    list3 = driver.find_element('xpath','/html/body/div[1]/div[2]/div/div[2]/div[{}]/div[2]/a'.format(count + 1))  # 选择下载第几个
    list3.click()
    windows = driver.window_handles
    driver.switch_to.window(windows[1])  # 切换到新窗口
    list4 = driver.find_element('xpath', '//*[@id="btn-download-lrc"]')  # 下载歌词
    list4.click()
    lr = driver.find_element('xpath', '//*[@id="content-lrc"]')  # 展现歌词
    print(lr.text)
    print("歌词下载完成")


def dowloadsong(driver):#下载某个歌曲
    list5 = driver.find_element('xpath', '//*[@id="btn-download-mp3"]')
    list5.click()  # 点击“下载歌曲”按钮
    ch = input("请选择下载歌曲品质(Y/y是低品质,N/n是高品质):")
    if ch in ["Y", "y"]:
        list6 = driver.find_element('xpath', '//*[@class="btn btn-link"]')  # 下载低品质,直接下载
        windows = driver.window_handles
        driver.switch_to.window(windows[1])  # 切换到新窗口
        list8 = driver.find_element('xpath','/html/body/div[4]/div[2]/div/div/div/div/div/div/div/div[3]/div/div/div/a[2]')
        print(list6.get_attribute('href'))
        list8.click()
        print(list6.text)  # 这个为啥获取不到链接,搞不懂
    elif ch in ["N", "n"]:
        list7 = driver.find_element('xpath','/html/body/div[4]/div[2]/div/div/div/div/div/div/div/div[3]/div/div/div/a[2]')  # 下载高品质,但是只是返回迅雷网盘链接
        print(list7.get_attribute('href'))

def main():
    driver = webdriver.Edge()  # 获取启动浏览器的资格
    driver.get("https://www.gequbao.com")  # 自动打开浏览器进去该网址
    getlist(driver)
    dowloadlr(driver)
    dowloadsong(driver)

main()
#想全部下载的话,只需要加一个for循坏,最好每次设置查询下载的间隔时间

欢迎各位大佬指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值