資料科學期末專題_一鍵下載youtube音樂- HackMD

文章推薦指數: 80 %
投票人數:10人

家中長輩喜歡去youtube聽音樂,但將下載影片轉為mp3檔案的步驟,較為繁瑣,所以想 ... Chrome() driver.get("https://www.youtube.com/?gl=TW&tab=r11") #前往這個網址 ...       Published LinkedwithGitHub Like Bookmark Subscribe #資料科學期末專題_一鍵下載youtube音樂 ####東華大學_資工三_郭新拳_401621205 ##動機 家中長輩喜歡去youtube聽音樂,但將下載影片轉為mp3檔案的步驟,較為繁瑣,所以想直接寫一個code,讓長輩直接輸入想要下載的音樂歌名,便可以直接將檔案下載下來,這樣長輩們就不怕擔心整個操作步驟了! ##目的 將youtube透過第三方軟體進行下載到本地端,這樣離線也能享受音樂了! ##相關技術 1.selenium 2.beautifulsoup 3.youtube有反爬蟲機制 ##專案描述 運用selenium模擬爬蟲,取得目標影片url連結,將url傳到第三方程式,然後進行mp3下載 ##結論 能使用的第三方下載軟體很多種,但下載速度都很慢,可能要花多一點的時間分別進行優化,如果該用戶有升級youtubepremium的話就根本不需要下載音樂了 ##code_採用更改網址到其他下載頁面進行下載 此網頁容易有502BadGateway,可能就要再重複requset一次 #####使用的第三方軟體:https://yout.com/ ```python= frombs4importBeautifulSoup fromseleniumimportwebdriver importre importunidecode importpandas importtime importrequests driver=webdriver.Chrome() driver.get("https://www.youtube.com/?gl=TW&tab=r11")#前往這個網址 search_input=driver.find_element_by_name("search_query") str=input("有興趣的音樂") search_input.send_keys(str)#帳號 start_search_btn=driver.find_element_by_id("search-icon-legacy") start_search_btn.click() time.sleep(5) url=driver.current_url html=requests.get(url) sp=BeautifulSoup(html.text,'lxml') url_lt=[] video_lt=sp.find_all('a',class_="yt-uix-tile-linkyt-ui-ellipsisyt-ui-ellipsis-2yt-uix-sessionlinkspf-link",limit=10) #抓youtubw前10筆內容 tag_span=[] title_span=[] href_span=[] download_url=[] lt=[[]forjinrange(10)] foriinrange(10): tag_span=video_lt[i].get("href") title_span=video_lt[i].get("title") href_span=tag_span[9:] download_url="https://yout.com/video/"+href_span+'/' lt[i]=download_url print(i+1,title_span) set_number=int(input()) #得到下載的目標網址 driver.get(lt[set_number]) download_btn=driver.find_element_by_class_name("recorder-type") download_btn.click() time.sleep(60) driver.close() ``` ##code_到第三方下載網頁輸入yt影片url進行下載以及轉檔(ok) 缺點會跳出廣告視窗 #####使用的第三方軟體:https://www.youtubeto.com/zh/ ```python= frombs4importBeautifulSoup fromseleniumimportwebdriver importre importunidecode importpandas importtime importrequests fromselenium.webdriver.common.action_chainsimportActionChains fromselenium.webdriver.chrome.optionsimportOptions driver=webdriver.Chrome() driver.get("https://www.youtube.com/?gl=TW&tab=r11")#前往這個網址 search_input=driver.find_element_by_name("search_query") str=input("有興趣的音樂") search_input.send_keys(str)#帳號 start_search_btn=driver.find_element_by_id("search-icon-legacy") start_search_btn.click() time.sleep(5) url=driver.current_url html=requests.get(url) sp=BeautifulSoup(html.text,'lxml') url_lt=[] video_lt=sp.find_all('a',class_="yt-uix-tile-linkyt-ui-ellipsisyt-ui-ellipsis-2yt-uix-sessionlinkspf-link",limit=10) #抓youtubw前10筆內容 tag_span=[] title_span=[] href_span=[] download_url=[] lt=[[]forjinrange(10)] foriinrange(10): tag_span=video_lt[i].get("href") title_span=video_lt[i].get("title") href_span=tag_span[9:] download_url="https://youtube.com/"+tag_span+'/' lt[i]=download_url print("{:<8d}{}".format(i+1,title_span)) set_number=int(input())-1 #得到下載的目標網址,輸入感興趣的號碼 driver.close() fromselenium.webdriver.chrome.optionsimportOptions chrome_options=Options() chrome_options.add_argument("--disable-notifications") driver=webdriver.Chrome(options=chrome_options) driver.implicitly_wait(10) download=lt[set_number] driver.get("https://www.youtubeto.com/zh/") sent_url=driver.find_element_by_id("url") time.sleep(10) sent_url.send_keys(download)# load_mp3=driver.find_element_by_id("DownloadMP3_text") load_mp4=driver.find_element_by_id("DownloadMP4_text") action=ActionChains(driver) action.move_to_element(load_mp4).perform() action.click(load_mp3) #模擬滑鼠移動 load_mp3.click() time.sleep(60) driver.quit() #下載的音樂會存在download資料夾 ``` × Signin Email Password Forgotpassword or Byclickingbelow,youagreetoourtermsofservice. SigninviaFacebook SigninviaTwitter SigninviaGitHub SigninviaDropbox NewtoHackMD?Signup



請為這篇文章評分?