进行下载文件时应该先定下步骤:
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("下载完成!")
我们先去网易云音乐复制分享链接 接着运行程序
由于是第一次投稿 组织能力可能没那么好 请见谅。