小做業: 使用爬蟲, 下載網易雲音樂
網易雲播放鏈接
http://music.163.com/song/media/outer/url?id=這裏填歌曲id.mp3
代碼執行效果...
C:\Users\Administrator\Desktop\demo>python -u "c:\Users\Administrator\Desktop\小白selenium爬取網易雲音樂\musicList.py"
請輸入您在網易雲想聽的歌曲: 水手
DevTools listening on ws://127.0.0.1:55067/devtools/browser/83140ac0-30e3-4a3c-b93a-d61cbb173f5a
1: 水手 - 鄭智化
2: 水手 - 鄭智化
3: 水手 - 鄭智化
4: 水手公園 - GALA
5: 水手(Live) - 鄭智化
6: 水手(Cover:鄭智化) - 陳洲宏
7: 水手 - 迪克牛仔
8: 水手公園 + 陽光彩虹小白馬 (Live) - (原唱:GALA/大張偉) - 何屹繁/鈕楊聖軒/哲野/潤羿///
9: 水手 - 張澤禹/胡鈺佳
10: 水手 - 陳進
11: 水手 - 張瑋瑋和郭龍
12: 水手 - 羣星
13: 水手 - 洪一平
14: 水手公園 - GALA
15: 大力水手主題曲 - Various Artists
16: 水手 - 動力火車
17: 水手 - 迪克牛仔
18: 水手 - Caesar L
19: 水手 - 羣星
20: 水手有點怕水(Hydrophobic Salior) - MT1990
21: セーラー服と機関銃 - (電影 水手服與機關槍:畢業 主題曲 / 映畫『セーラー服と機関銃 ‐卒業‐』主題歌) - 橋本環奈
22: 水手 - 張偉哲
23: 水手 - 陳秋霞
24: 鄭智化-水手 (DJ阿福 Remix)(DJ阿福 (DJ-Afu) remix) - DJ阿福
25: 水手 (Tribute Version) - 複製貓
26: 少女與水手(口琴) - 羣星
27: 小小世界+荷包蛋+說哈羅+山上的孩子+快樂的向前走+哎哎+大力水手+手牽手+哈哈笑+稻草裏的火雞+種樹歌+大象玩皮球+小栗子+下雨+小紅妹妹和小熊+虹彩妹妹+木
瓜+小螳螂+四隻小小鳥+西風的話+哈巴狗+蘭花草+泥娃娃 - 羣星
28: 【局座】水手 - LPY/東林二七
29: セーラー服と機関銃 - 長澤雅美
30: 水手物語 - 陳百強
請輸入您鄉下仔的歌曲序號: 1
水手 - 鄭智化 正在下載...
水手 - 鄭智化 下載完成!!!
C:\Users\Administrator\Desktop\demo>
複製代碼
import requests
import time
from selenium import webdriver
music_list = []
def get_list(key_word):
url = "https://music.163.com/#/search/m/?s="+key_word
driver = webdriver.Chrome()
driver.get(url)
time.sleep(2)
driver.switch_to.frame("g_iframe") # 最重要的一步
music_a_list = driver.find_elements_by_css_selector(
"div.td.w0 > div > div > a:nth-child(1)")
name_b_list = driver.find_elements_by_css_selector(
"div.td.w0 > div > div > a > b")
singer_div_list = driver.find_elements_by_css_selector("div.td.w1 > div")
for i in range(0, len(music_a_list)):
music_id = music_a_list[i].get_attribute('href')[30:]
music_name = name_b_list[i].get_attribute('title')
singer_name = singer_div_list[i].text
print('{}: {} - {}'.format(i+1, music_name, singer_name))
global music_list
music_list.append({
'music_id': music_id,
'music_name': music_name,
'singer_name': singer_name
})
driver.close()
def down_mp3(index):
global music_list
music_id = music_list[index]['music_id']
music_name = music_list[index]['music_name']
singer_name = music_list[index]['singer_name']
down_url = 'http://music.163.com/song/media/outer/url?id=%s.mp3' % music_id
with open('E:\\網易雲音樂\\{} - {}.mp3'.format(music_name, singer_name), 'wb') as file:
print('{} - {} 正在下載...'.format(music_name, singer_name))
file.write(requests.get(down_url).content)
print('{} - {} 下載完成!!!'.format(music_name, singer_name))
if __name__ == '__main__':
key_word = input('請輸入您在網易雲想聽的歌曲: ')
get_list(key_word)
music_index = input('請輸入您鄉下仔的歌曲序號: ')
down_mp3(int(music_index)-1)
複製代碼
貓哥教你寫爬蟲 000--開篇.md
貓哥教你寫爬蟲 001--print()函數和變量.md
貓哥教你寫爬蟲 002--做業-打印皮卡丘.md
貓哥教你寫爬蟲 003--數據類型轉換.md
貓哥教你寫爬蟲 004--數據類型轉換-小練習.md
貓哥教你寫爬蟲 005--數據類型轉換-小做業.md
貓哥教你寫爬蟲 006--條件判斷和條件嵌套.md
貓哥教你寫爬蟲 007--條件判斷和條件嵌套-小做業.md
貓哥教你寫爬蟲 008--input()函數.md
貓哥教你寫爬蟲 009--input()函數-人工智能小愛同窗.md
貓哥教你寫爬蟲 010--列表,字典,循環.md
貓哥教你寫爬蟲 011--列表,字典,循環-小做業.md
貓哥教你寫爬蟲 012--布爾值和四種語句.md
貓哥教你寫爬蟲 013--布爾值和四種語句-小做業.md
貓哥教你寫爬蟲 014--pk小遊戲.md
貓哥教你寫爬蟲 015--pk小遊戲(全新改版).md
貓哥教你寫爬蟲 016--函數.md
貓哥教你寫爬蟲 017--函數-小做業.md
貓哥教你寫爬蟲 018--debug.md
貓哥教你寫爬蟲 019--debug-做業.md
貓哥教你寫爬蟲 020--類與對象(上).md
貓哥教你寫爬蟲 021--類與對象(上)-做業.md
貓哥教你寫爬蟲 022--類與對象(下).md
貓哥教你寫爬蟲 023--類與對象(下)-做業.md
貓哥教你寫爬蟲 024--編碼&&解碼.md
貓哥教你寫爬蟲 025--編碼&&解碼-小做業.md
貓哥教你寫爬蟲 026--模塊.md
貓哥教你寫爬蟲 027--模塊介紹.md
貓哥教你寫爬蟲 028--模塊介紹-小做業-廣告牌.md
貓哥教你寫爬蟲 029--爬蟲初探-requests.md
貓哥教你寫爬蟲 030--爬蟲初探-requests-做業.md
貓哥教你寫爬蟲 031--爬蟲基礎-html.md
貓哥教你寫爬蟲 032--爬蟲初體驗-BeautifulSoup.md
貓哥教你寫爬蟲 033--爬蟲初體驗-BeautifulSoup-做業.md
貓哥教你寫爬蟲 034--爬蟲-BeautifulSoup實踐.md
貓哥教你寫爬蟲 035--爬蟲-BeautifulSoup實踐-做業-電影top250.md
貓哥教你寫爬蟲 036--爬蟲-BeautifulSoup實踐-做業-電影top250-做業解析.md
貓哥教你寫爬蟲 037--爬蟲-寶寶要聽歌.md
貓哥教你寫爬蟲 038--帶參數請求.md
貓哥教你寫爬蟲 039--存儲數據.md
貓哥教你寫爬蟲 040--存儲數據-做業.md
貓哥教你寫爬蟲 041--模擬登陸-cookie.md
貓哥教你寫爬蟲 042--session的用法.md
貓哥教你寫爬蟲 043--模擬瀏覽器.md
貓哥教你寫爬蟲 044--模擬瀏覽器-做業.md
貓哥教你寫爬蟲 045--協程.md
貓哥教你寫爬蟲 046--協程-實踐-吃什麼不會胖.md
貓哥教你寫爬蟲 047--scrapy框架.md
貓哥教你寫爬蟲 048--爬蟲和反爬蟲.md
貓哥教你寫爬蟲 049--完結撒花.mdcss