進行下載文件時應該先定下步驟:
1.我們需要抓取下載歌曲的網址 [網易雲的下載歌曲鏈接:http://music.163.com/song/media/outer/url?id={}.MP3] {}要換成歌名 我們可以運用str.format("歌名")去構成鏈接
2.我們需要知道下載歌曲需要哪些參數[網易雲的下載歌曲只需要知道歌曲的ID就行了]
3.網易雲歌曲的ID怎么獲取呢? ------請看下圖
復制鏈接后我們只需要拿去我們需要的id
實例:
我們復制的鏈接為:https://music.163.com/song?id=1901371647&userid=2032247162
我們發現id=1901371647
我們只要他的數值:1901371647
我們運用pyperclip庫將我們復制的內容定義一個變量 ↓
SongUrl = pyperclip.paste()
判斷SongUrl是否為空 如果他是空的就證明我們沒有復制成功 ↓
if SongUrl == "" :
print("請復制鏈接!") //打印文字 提示用戶去復制鏈接
sys.exit() //這行代碼可以讓程序退出!
else : 這里開始寫截取id的代碼
截取id的機制:
我們需要運用到str.find()的函數
我們知道str的值擁有着一個數值 比如 HelloWorld ↓
H = 0
e = 1
l = 2
l = 3
o = 4
最后的d = 9
str.find()的函數就是可以找到str值所對應的數值 比如運用find函數找上面HelloWorld的W數值 ↓
Message = HelloWorld
print(str(Message).find("W")) 最后打印的結果為5
我們可以運用str[x:x]來截取我們想要的內容
運用以上機制我們開始寫獲取ID的代碼
1. SongUrl不為空時說明我們復制成功了 開始找id所對應的數值 運用str(SongUrl).find("id")
2. 找到id所對應的數值后我們發現他只獲取到了i的數值 我們運用i的數值+3就可以獲取到=后面值的數值 例如 https://music.163.com/song?id=1901371647&userid=2032247162
這時候我們獲取到i的值是27 因為id是1901371647 我們只需要這一串其他都不需要 因此我們用i的數值+3就可以獲取到=后面值的數值 這里我們獲取的是1的數值
3.我們發現ID后面有個&的符號這個是一個我們可以利用的點 我們用str.find("&")來獲取&所對應的數值 這里所對應的是40
4.我們知道了=和&的數值后開始用str[x:x]來截取我們所需要的ID 代碼如下↓
songid = str(SongUrl)[int(str(SongUrl).find('id')) + 3:int(str(dd.find('&')))] 因為字符串開始是從0算的 所以i對應的數值+3才是1所對應的數值 + 2 的話我們獲取到的內容就是 "=1901371647" 我們只需要ID 但是這里多了個=號 所以 + 3
songid我們獲取到了 現在就要運用到requests來下載歌曲了
url = "http://music.163.com/song/media/outer/url?id={}.MP3"
heards = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"} 這個不用管
r = requests.get(url.format(songid), headers=heards) 創建 requests變量
用requests.iter_content()來下載歌曲
進行一個ID判斷 因為我們的ID只有數字沒有英文等因素所以用str里面的isnumeric來判斷
if not songid.isnumeric() :
print("復制鏈接錯誤!")
sys.exit()
else : 這里面寫下載歌曲的代碼 ↓
if not os.path.exists("./Songs") : os.mkdir("./Songs") 判斷該目錄是否有Songs文件夾 如果沒有側新建一個叫Songs的文件夾
file_name = "./Songs/id " + str(songid) + " .mp3" 這個是下載歌曲的路徑
with open(file_name, "wb") as f:
for j in r.iter_content(chunk_size=512):
f.write(j)
print("下載完成!")
我們先去網易雲音樂復制分享鏈接 接着運行程序
由於是第一次投稿 組織能力可能沒那么好 請見諒。