Python爬取网易云音乐视频

一、抓包分析

爬虫嘛,一开始当然是分析分析网页,以《大鱼》为例:

定位分析一波,我在网页中发现了这个:

直觉告诉我,有戏(其实视频链接确实在这儿),然后抓个包:


二、提取信息

接下来使用一个谷歌插件 Get Postman,特别好用

复制一下curl:

然后打开postman,点击import按钮,选择Past Raw Text,把刚复制的cURl粘贴进去:

点击send,可以看到返回了我们想要的东西:

接下来会出现一个面板,选择Python Requests,直接一键生成python请求代码,直接复制使用,真香!!!

接下来使用xpath选择器处理一下,打印我们想要的信息看看

下面这是返回链接信息:


三、处理信息

后面有一部分是不需要的,截掉它,仔细观察,我们可以看到,里面包含了两个链接,对应两种不同的画质(后面测试过),把两个链接分开

urls = urls.split("&autoPlay")[0].split("hurl=")[1].split("murl=")

由于编码原因,链接里面有些字符需要转化一下,对应关系如下:

转化前 转化后
%3A :
%2F /
%3F ?
%3D =
%26 &

这里简单粗暴点,直接替换掉:

def url_parse(url):
    s1 = ["%3A","%2F","%3F","%3D","%26"]
    s2 = [":","/","?","=","&"]
    for i in range(len(s1)):
        url = re.sub(s1[i],s2[i],url)
    return url

看一下处理结果:


四、下载视频

这里使用我之前爬抖音视频时写的一个python下载程序mydload

pip install mydload

使用方法

from mydload import downloadfile #引入模块
downloadfile(url,filename) #传入链接和文件名

现在已经拿到了视频链接,接下来从网页中提取视频名

vname = data.xpath('//*[@id="flag_title1"]/text()')[0]
周深_郭沁《大鱼》_柔情天籁周深开嗓惊艳全场

ok ,一切准备就绪,接下来开干。对了,忘了说每个视频都有个视频id

https://music.163.com/#/video?id=B775FC32AADDB43B908DB062AFB0752D

我们可以传入不同的id ,下载不同的视频,在复制链接的时候我们都是全体复制,而要单独复制id的话显得麻烦,为了方便,我们可以直接传入全链接,再自定义个函数提取链接中的视频id:

def get_id(url):
    id = url.split("=")[-1]
    return id

嗯,搞定,很简单。

接下来放大招:

def main():
    url = input("请输入视频链接:")
    id = get_id(url)
    vname = get_data(id)[1] + ".mp4"
    furl = get_data(id)[0][0]
    vurl = url_parse(furl)
    downloadfile(vurl,vname)

运行一波试试:

播放正常:


五、源码分享

源码放在github上,有需要请自取,源码


文章作者: 冷大大猫
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 冷大大猫 !
  目录