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 相关文章推荐
利用python微信库itchat实现微信自动回复功能
May 18 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
python简单实现AES加密和解密
Mar 28 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
Python爬虫新手入门之初学lxml库
Dec 20 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
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
Vue实现简单分页器
2018/12/29 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python程序运行原理图文解析
2018/02/10 Python
django中模板的html自动转意方法
2018/05/27 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
冰淇淋店的创业计划书
2014/02/07 职场文书
大学计划书范文800字
2014/08/14 职场文书
超市周年庆活动方案
2014/08/16 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript