下载网易云收费歌曲、观看爱奇艺VIP视频并下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weifuliu/article/details/84311795

多年前,在一档电视节目中,歌手韩红斥责中国盗版太多,吐槽中国对版权的不重视、说实话,作为一名付不起VIP的良好中国公民来说,听到这话挺无奈的,心想要是中国也和美国那样知识版权意识太好,那以后谁还听歌了。然而。我们做过的发展超乎了世界的想想,对版权意识的增加也完全超出了我的想想,不知何时起,网易云为代表的一批音乐运营商发动所有资源终于对音乐这块下手了。有一句话说的好:“既然你要发动江湖势力,那就让你看看这究竟是谁的江湖”,

网易云收费歌曲下载

打开网易云音乐的热歌榜,以热歌榜为例

键盘按F12键或鼠标右键点击检查,弹出开发者工具,然后点击其中一首歌,点击播放,我们就可以看到下面弹出了很多条目,这都是我们向服务器发送请求后返回的文件,我们的任务就是在众多文件中寻找到我们正在收听的歌曲文件(即MP3文件)
开发者工具
点击红色边框内的Media,在这里我们可以看到服务器响应返回的多媒体文件,绿色箭头所指就是歌曲文件了。
开发者工具
既然找到了我们所要的文件,该怎么下载呢???不用担心,右键点击该文件。
将鼠标地方在该文件上,我们就可以看到该文件的连接了,既然知道音频的链接地址,我们有知道音频在网上都是以二进制文件存储传输的,那么使用python就可以很容易的下载了,若是有小伙伴还不知道如何使用python下载二进制文件可参考博文:python下载二进制文件
当然还有一种方法并不需要编写代码就可以下载,那就是鼠标右键点击绿色箭头所指文件,选择弹出的选项卡中的第一项“Open in new tab”会弹出一个新的页面
歌曲
在新弹出的页面中我们点击播放就可以播放该歌曲了,至于要下载,点击最右边的省略号,会有如下选项卡,点击下载,歌曲便会成功下载了
在这里插入图片描述

人穷购买不起VIP,唯有此法,只能说人在江湖,身不由己

当然这种方式属于纯手工操作,我们也可以代码下载:

找到绿色箭头所指的文件的话,我们有很多途径可以获得该歌曲文件的绝对路径:
1、右键点击该文件,点击Open in new tab在新打开的网页浏览器地址栏有该文件的绝对路径链接地址
2、右键点击该文件,点击Copy>copy link address就可以获取该音乐文件的连接地址
以歌曲《可不可以》为例,我们获取的链接地址为可不可以》mp3
既然知道了链接地址,下载的话就好说,左键点击绿色箭头所指的文件,我们会看到右侧出现很多信息,如下所示:
在这里插入图片描述
通过观察分析,我们看到该mp3文件是以get方式请求的,看到这里,我们就可以写代码下载该音乐了

代码

import requests

r = requests.get('http://m10.music.126.net/20181121151228/f0ff54de823b6dad38c3ca5883732c66/ymusic/341e/9cc2/7c4f/b13ac6e62d3625524dde95fd1b1628bf.mp3')

with open('可不可以.mp3','wb') as f:
    f.write(r.content)

运行结果

在这里插入图片描述
那到这里,是不就是可以通过代码下载歌曲了呢。

当然作为程序员,这么点代码两肯定是不够的,爬虫作为一种爬取数据的手段,其目的是要实现自动化爬取,很明显前面人工的操作太多了。下面我们让整个项目更加自动化一点。

随意选取一首音乐,我们还是以《可不可以》为例
在这里插入图片描述
在网易云音乐中我们知道每首歌曲都有专门的歌曲id。《可不可以》id为553755659,
所以我们可以看到《可不可以》所在的网页链接为

https://music.163.com/#/song?id=553755659
由此也就推测所有歌曲的网页链接为https://music.163.com/#/song?id=后面跟上他的id号。不信多打开几首歌查看试试。

那么知道这个有什么用呢?
我们知道一个歌曲会有很多信息,就如网页上显示的一样,有歌曲名、歌词、歌手等,这些都是从服务器请求得来的,一般服务器会将这些信息组成一个数据快传送过来。
刷新界面(按F5)
将红色方框中选为XHR,我们打开绿色箭头所指的文件,然后点击priview,我们可以看到很多关于此歌曲的信息。
在这里插入图片描述
其中有一项是歌曲的URL
在这里插入图片描述
经过比对,这和我们之前得到的链接是一样的,所以我们有理由相信,这就是《可不可以》的正确文件地址。
所以说我们是需要型服务器请求这一个文件就可,接下来咱们看一下他的响应头
在这里插入图片描述

在这里插入图片描述
我们可以看到,响应方式为post,并且传入了params、encSecKey两个参数,显然是加密过的,但是咱们不深究这是如何加密解密,咱们可以直接复制这两个参数使用就行
话不多说,上代码

import requests
import re
import json

'''
    Author: Face_to_sun
    modify: 2018-11-21
'''

def download_MP3(url):
    '''下载歌曲'''
    r = requests.get(url)
    with open('Music\\可不可以.mp3','wb') as f:
        f.write(r.content)

def getUrl():
    '''获得歌曲URL'''
    r = requests.post(url, headers=headers, data=data)
    response_data = json.loads(r.text)
    print(response_data['data'][0]['url'])
    download_url = response_data['data'][0]['url']
    return download_url

if __name__ == "__main__":
    url = 'https://music.163.com/weapi/song/enhance/player/url?csrf_token='
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36',
        'Host': 'music.163.com',
        'referer': 'https://music.163.com/',
        'Origin': 'https://music.163.com'
    }

    data = {
        'params': 'u6SEfpt2WTDENzie0aJs1c3dzjB1cQjGVERXnkRLnHnsiFSaAdUfeBwu9jeoC6axZjvKyidX7r9S7aoPiyxJ2qJ2X+mygkjnYZM4qYvgyBZAdvqtY7OfVnuMUaAnAG4U',
        'encSecKey': 'c02c3b63f5b129b1891f516ace6e8343e848d9bd15d5494e3be9f116c2b76bc2f430837de91e9fd4eec7aa257763f1a6b6f8f6861364fb8ca77c9dbc376db203ea92ed8a8f2c225e031b581e154b8d85f409b380cf982475abe9b32d5a5d2111e69c6d3599e186fe29afa5183f7b37645395e964e656cc3e8611f559f664ee69'
    }
    url = getUrl()
    download_MP3(url)

在这里插入图片描述
闲来发现,在响应回来的文件中还有歌词文件,我们也可以从中下载歌曲的歌词,不妨试试。

更多有关python爬虫的内容,请关注博主的专栏python3爬虫谢谢支持~~

猜你喜欢

转载自blog.csdn.net/weifuliu/article/details/84311795