某日,在一个风和日丽,鸟语花香的早晨,我的微信突然闪闪闪收到一个消息:

当我复制打开那一串复杂的网址的时候,眼前出现的是一个微信公众号上的一首歌。按下F12,找不到任何跟MP3有关的信息。
这种事情怎么会难倒我那颗好奇心呢,于是我打开了万能的谷歌浏览器,点击播放歌曲。。。

听着听着。。。不对,我不是来听歌的。
按下F12,点击Network,重新播放歌曲,此时看看Network下触发的事件:
可以看到播放按钮触发了三个事件,一个是图片gif,一个是html,另一个media可能就是我们需要的MP3文件了。
点击第三个media事件,查看头部请求地址:

访问这个url,发现是一个MP3,就是我们这次下载的目标了。接下来就是写代码下载到本地了。
具体代码如下:
# 下载MP3文件到本地
import os
import requests
def DownloadFile(mp3_url, save_url,file_name):
try:
if mp3_url is None or save_url is None or file_name is None:
print('参数错误')
return None
# 文件夹不存在,则创建文件夹
folder = os.path.exists(save_url)
if not folder:
os.makedirs(save_url)
# 读取MP3资源
res = requests.get(mp3_url,stream=True)
# 获取文件地址
file_path = os.path.join(save_url, file_name)
print('开始写入文件:', file_path)
# 打开本地文件夹路径file_path,以二进制流方式写入,保存到本地
with open(file_path, 'wb') as fd:
for chunk in res.iter_content():
fd.write(chunk)
print(file_name+' 成功下载!')
except:
print("程序错误")
if __name__ == "__main__":
# MP3源地址url
url = 'https://res.wx.qq.com/voice/getvoice?mediaid=MzU1Njc2MzY3M18yMjQ3NDg0MTkx'
# MP3保存文件夹
save_url='D:/music/'
# MP3文件名
file_name = 'mymusic.mp3'
DownloadFile(url,save_url, file_name)
运行程序,提示下载成功!

在D盘中找到相应的文件夹,打开发现真的多了一个MP3格式的文件。
双击播放,熟悉的音乐开始响起,证明这次程序是成功的。
395





