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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
python获取指定时间差的时间实例详解
Apr 11 Python
python实现12306火车票查询器
Apr 20 Python
基于python时间处理方法(详解)
Aug 14 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
Django发送邮件功能实例详解
Sep 02 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
用python对excel查重
Dec 07 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 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数据库存储操作类分享
2014/06/11 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
ThinkPHP路由详解
2015/07/27 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
javascript第一课
2007/02/27 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
js中less常用的方法小结
2017/08/09 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
浅析Git版本控制器使用
2017/12/10 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
为什么说python更适合树莓派编程
2020/07/20 Python
Python如何对齐字符串
2020/07/30 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
合同专员岗位职责
2013/12/18 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
小学教育见习总结
2015/06/23 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
校友会致辞
2015/07/30 职场文书