python 根据网易云歌曲的ID 直接下载歌曲的实例


Posted in Python onAugust 24, 2019

特么的,上次写了一堆,发现,原来下载网易云的歌曲根本不用这么费劲,直接用!

http://music.163.com/song/media/outer/url?id=这里填歌曲id.mp3

这个URL就可以下载了,真特么操蛋!!

现在再来做一次!根据歌单下载歌曲

import requests,os,time,sys,re
from scrapy.selector import Selector

class wangyiyun():
  def __init__(self):
    self.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',
      'Referer': 'http://music.163.com/'}
    self.main_url='http://music.163.com/'
    self.session = requests.Session()
    self.session.headers=self.headers

  def get_songurls(self,playlist):
    '''进入所选歌单页面,得出歌单里每首歌各自的ID 形式就是“song?id=64006"'''
    url=self.main_url+'playlist?id=%d'% playlist
    re= self.session.get(url)  #直接用session进入网页,懒得构造了
    sel=Selector(text=re.text)  #用scrapy的Selector,懒得用BS4了
    songurls=sel.xpath('//ul[@class="f-hide"]/li/a/@href').extract()
    return songurls  #所有歌曲组成的list
    ##['/song?id=64006', '/song?id=63959', '/song?id=25642714', '/song?id=63914', '/song?id=4878122', '/song?id=63650']

  def get_songinfo(self,songurl):
    '''根据songid进入每首歌信息的网址,得到歌曲的信息
    return:'64006','陈小春-失恋王'''
    url=self.main_url+songurl
    re=self.session.get(url)
    sel=Selector(text=re.text)
    song_id = url.split('=')[1]
    song_name = sel.xpath("//em[@class='f-ff2']/text()").extract_first()
    singer= '&'.join(sel.xpath("//p[@class='des s-fc4']/span/a/text()").extract())
    songname=singer+'-'+song_name
    return str(song_id),songname

  def download_song(self, songurl, dir_path):
    '''根据歌曲url,下载mp3文件'''
    song_id, songname = self.get_songinfo(songurl) # 根据歌曲url得出ID、歌名
    song_url = 'http://music.163.com/song/media/outer/url?id=%s.mp3'%song_id
    path = dir_path + os.sep + songname + '.mp3' # 文件路径
    requests.urlretrieve(song_url, path) # 下载文件

  def work(self, playlist):
    songurls = self.get_songurls(playlist) # 输入歌单编号,得到歌单所有歌曲的url
    dir_path = r'C:\Users\Administrator\Desktop'
    for songurl in songurls:
      self.download_song(songurl, dir_path) # 下载歌曲

if __name__ == '__main__':
  d = wangyiyun()
  d.work(2214059025)

搞定!代码简单得一塌糊涂,,真特么费脑子!!

python 根据网易云歌曲的ID 直接下载歌曲的实例

以上这篇python 根据网易云歌曲的ID 直接下载歌曲的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Django实现一个可运行的区块链应用
Mar 08 Python
Python3处理HTTP请求的实例
May 10 Python
python实现图片识别汽车功能
Nov 30 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
python实现简单的学生管理系统
Feb 22 Python
Pandas加速代码之避免使用for循环
May 30 Python
Python中with上下文管理协议的作用及用法
Mar 18 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 #Python
python解释器spython使用及原理解析
Aug 24 #Python
python爬虫之爬取百度音乐的实现方法
Aug 24 #Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 #Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 #Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 #Python
简单分析python的类变量、实例变量
Aug 23 #Python
You might like
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
js的event详解。
2006/09/06 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
python利用装饰器进行运算的实例分析
2015/08/04 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
Python操作Excel的学习笔记
2021/02/18 Python
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
自动化职业生涯规划书范文
2014/01/03 职场文书
企业法人代表任命书
2014/06/06 职场文书
2014年采购员工作总结
2014/11/18 职场文书
售后服务承诺函格式
2015/01/21 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
springboot如何初始化执行sql语句
2021/06/22 Java/Android
python超详细实现完整学生成绩管理系统
2022/03/17 Python