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之再深点,更懂list
Sep 20 Python
python比较两个列表大小的方法
Jul 11 Python
python实现12306抢票及自动邮件发送提醒付款功能
Mar 08 Python
python list是否包含另一个list所有元素的实例
May 04 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
ipad上运行python的方法步骤
Oct 12 Python
python实现计算器功能
Oct 31 Python
logging level级别介绍
Feb 21 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
基于python实现模拟数据结构模型
Jun 12 Python
python单例模式的应用场景实例讲解
Feb 24 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
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
常用js脚本
2006/12/03 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python2.7到3.x迁移指南
2018/02/01 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
python对象与json相互转换的方法
2019/05/07 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
李宁官方网店:中国运动品牌
2017/11/02 全球购物
学生检讨书怎么写?
2014/10/10 职场文书
小型婚礼主持词
2015/06/30 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
python处理json数据文件
2022/04/11 Python