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之admin组件的使用和源码剖析
May 04 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
Python爬取成语接龙类网站
Oct 19 Python
python实现在函数中修改变量值的方法
Jul 16 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
python3将变量写入SQL语句的实现方式
Mar 02 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
php实现的xml操作类
2016/01/15 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
JavaScript this调用规则说明
2010/03/08 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python代码实现KNN算法
2017/12/20 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
python实现彩票系统
2020/06/28 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
财务会计专业推荐信
2013/11/30 职场文书
会员卡清退活动总结
2014/08/27 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
化验室安全管理制度
2015/08/06 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
java代码实现空间切割
2022/01/18 Java/Android
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL