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分析git log日志示例
Feb 27 Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
Python实现word2Vec model过程解析
Dec 16 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
pytorch 查看cuda 版本方式
Jun 23 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
PHP4实际应用经验篇(2)
2006/10/09 PHP
php 文件缓存函数
2011/10/08 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python class的继承方法代码实例
2020/02/14 Python
python实现批量修改文件名
2020/03/23 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
求职简历中的自我评价分享
2013/12/08 职场文书
文案策划专业自荐信
2014/07/07 职场文书
车辆年审委托书范本
2014/09/18 职场文书
颐和园的导游词
2015/01/30 职场文书
收费员岗位职责
2015/02/14 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
Mysql中mvcc各场景理解应用
2022/08/05 MySQL