还是以这个网址为例:
具体的原理之前也记录过,这里不作赘述,直接上源码
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循坏,最好每次设置查询下载的间隔时间
欢迎各位大佬指导