python下载网易云MV

1、这篇文章是一个小示例,思路是获取网易云MV的下载url,再使用with open下载到本地文件夹。

2、笔者下载是的薛之谦刚刚好mv,网页地址是:http://music.163.com/#/mv?id=5302569

笔者使用的360极速浏览器,打开开发者工具。分析网页。在http://music.163.com/mv?id=5302569网页源代码,可以查找到MV的下载url,可以搜索“hurl”,如下图所示。





3、使用正则表达式,匹配出hurl的值。再使用urllib.parse.unquote解码。

pattern = re.compile(r'<param name="flashvars" value=hurl=(.*?)&amp;murl=')
url=re.findall(pattern,req.text)[0]
url=urllib.parse.unquote(url)

4、具体代码如下:
import requests
import os
import re
import json  #下载我们不一样mv  在开发者工具中 ALL中选择最大的size
import urllib

def get_mv(url,file_name):
    headers={
        'User - Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 55.0.2883.87 Safari / 537.36'
    }

    req=requests.get(url,headers=headers)

    if not os.path.exists('D:\\wangyiyun_mv'):
        os.makedirs('D:\\wangyiyun_mv')

    os.chdir('D:\\wangyiyun_mv')
    with open(file_name+'.mp4','wb') as file:
        file.write(req.content)
        file.close()
    print(file_name+' download ok')


def get_title():
    #url='http://music.163.com/mv?id=5302569'
    url='http://music.163.com/mv?id=5302569'
    headers = {
        'User - Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 55.0.2883.87 Safari / 537.36'
    }
    req = requests.get(url, headers=headers)
    req.encoding='utf-8'

    pattern=re.compile(r'<script type="application/ld\+json">(.*?)</script>',re.S)
    result=re.findall(pattern ,req.text)[0].strip()
    file_name=json.loads(result)['title']

    pattern = re.compile(r'<param name="flashvars" value=hurl=(.*?)&amp;murl=')
    url=re.findall(pattern,req.text)[0]
    url=urllib.parse.unquote(url)  #url解码
    return url,file_name


if __name__=='__main__':
    url,file_name=get_title()
    get_mv(url,file_name)

5、最后要感谢这位网友:http://www.codeweblog.com/%E4%BD%BF%E7%94%A8python%E5%AE%9E%E7%8E%B0%E4%B8%8B%E8%BD%BD%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E7%9A%84%E9%AB%98%E6%B8%85mv/
他的这篇文章对笔者有所启发,希望大家指出不足。

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值