亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么使用 Selenium下載歌曲

發布時間:2021-07-05 17:22:11 來源:億速云 閱讀:171 作者:Leah 欄目:編程語言

這篇文章給大家介紹Python中怎么使用 Selenium下載歌曲,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

步驟一:

進入酷狗主頁,F12查看元素,,通過selenium.webdriver的send_keys()方法給send_input類傳參,即用作用戶的輸入,然后通webdriver.click()方法點擊搜索按鈕,得到搜索結果列表。這里會有一個js重定向,通過webdriver.current_ur就可以了,,切記一點!傳入的參數需要經過unicode編碼(.decode(‘gb18030′))效果一樣),否則如果有中文會亂碼。。(來自被深深困擾的我)

Python中怎么使用 Selenium下載歌曲

步驟二:

查看元素里每首歌的路徑,發現每首歌的路徑只有<li>不同,于是通過對li的迭代來獲取每一首歌的xpath,并輸出歌曲名字的元素,然后依舊通過webdriver的click()方法點擊歌曲鏈接,得到歌曲播放頁面,這里沒有什么難點,都是常規操作。需要注意的是,這里的歌曲鏈接也包含一個js的重定向,但不一樣的是瀏覽器會打開一個新的頁面(至少火狐會),可以在click()方法后通過webdriver.switch_to_window()方法跳轉到新打開的頁面

Python中怎么使用 Selenium下載歌曲

步驟三:

進入播放頁面后通過xpath找到播放源文件鏈接(強推firepath,xpath神器啊)但發現這里依然有一個js渲染,來生成播放源鏈接,直接提取<src>標簽會顯示為空,于是繼續webdriver,調用的瀏覽器會自動解析js腳本,解析完成后提取<src>得到歌曲鏈接,使用urllib的urlretrueve()下載即可

Python中怎么使用 Selenium下載歌曲

代碼如下:

#coding=utf-8 from selenium.webdriver.remote.webelement import WebElement from selenium import webdriver from selenium.webdriver import ActionChains from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import StaleElementReferenceException from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.by import By import time import urllib  #歌曲名 mname = ''  #JS重定向 def wait(driver):     elem = driver.find_element_by_tag_name('html')     count = 0     while True:         count += 1         if count > 20:             print('chao shi le')             return         time.sleep(.5)         try:             elem == driver.find_element_by_tag_name('html')         except StaleElementReferenceException:             return  #獲取url def geturl():     input_string = raw_input('>>>please input the search key:')     driver = webdriver.Chrome()     url = 'http://www.kugou.com/'     driver.get(url)     a=driver.find_element_by_xpath('html/body/div[1]/div[1]/div[1]/div[1]/input') #輸入搜索內容     a.send_keys(input_string.decode('gb18030'))     driver.find_element_by_xpath('html/body/div[1]/div[1]/div[1]/div[1]/div/i').click() #點擊搜索     result_url = driver.current_url     driver.quit()     return result_url   #顯示搜索結果 def show_results(url):     driver = webdriver.Chrome()     driver.get(url)     time.sleep(3)     for i in range(1,1000):         try:             print '%d. '%i + driver.find_element_by_xpath(".//*[@id='search_song']/div[2]/ul[2]/li[%d]/div[1]/a"%i).get_attribute('title')  #獲取歌曲名         except NoSuchElementException as msg:             break     choice = input(">>>Which one do you want(you can input 'quit' to goback(帶引號)):")     if choice == 'quit':   #從下載界面退回         result = 'quit'     else:         global mname         mname = driver.find_element_by_xpath(".//*[@id='search_song']/div[2]/ul[2]/li[%d]/div[1]/a"%choice).get_attribute('title')         a = driver.find_element_by_xpath(".//*[@id='search_song']/div[2]/ul[2]/li[%d]/div[1]/a"%choice)         actions = ActionChains(driver)         actions.move_to_element(a)         actions.click(a)         actions.perform()         #wait(driver)         driver.switch_to_window(driver.window_handles[1])  #跳轉到新打開的頁面         result = driver.find_element_by_xpath(".//*[@id='myAudio']").get_attribute('src') #獲取播放元文件url         driver.quit()     return result   #下載回調 def cbk(a, b, c):     per = 100.0 * a * b / c       if per > 100:         per = 100     print '%.2f%%' % per       def main():     print'***********************歡迎使用GREY音樂下載器********************************'     print'                                                      directed by GreyyHawk'     print'**************************************************************************'     time.sleep(1)     while True:         url = geturl()         result = show_results(url)         if result == 'quit':             print'\n'             continue         else:             local = 'd://%s.mp3'%mname             print 'download start'             time.sleep(1)             urllib.urlretrieve(result, local, cbk)             print 'finish downloading %s.mp3'%mname + '\n\n'    if __name__ == '__main__':   main()

效果:

Python中怎么使用 Selenium下載歌曲

關于Python中怎么使用 Selenium下載歌曲就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤庆县| 肇源县| 宣化县| 田东县| 乌拉特前旗| 屯昌县| 尖扎县| 弋阳县| 石狮市| 温宿县| 肥东县| 洛扎县| 浦江县| 天峻县| 南和县| 临武县| 岑巩县| 民丰县| 迭部县| 阿拉善右旗| 施秉县| 务川| 韩城市| 吴忠市| 麦盖提县| 阿瓦提县| 石嘴山市| 富源县| 自贡市| 巴东县| 朝阳县| 军事| 当雄县| 沁阳市| 泗阳县| 福海县| 绍兴市| 班玛县| 淳安县| 莱芜市| 大荔县|