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 解析html之BeautifulSoup
Jul 07 Python
Python中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
python网络编程示例(客户端与服务端)
Apr 24 Python
Python中的with...as用法介绍
May 28 Python
Python实现模拟时钟代码推荐
Nov 08 Python
python中requests和https使用简单示例
Jan 18 Python
浅析python的Lambda表达式
Feb 27 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
Python字符串的常见操作实例小结
Apr 08 Python
python重要函数eval多种用法解析
Jan 14 Python
Python enumerate内置库用法解析
Feb 24 Python
Opencv求取连通区域重心实例
Jun 04 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
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python中查看文件名和文件路径
2017/03/31 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Python使用python-docx读写word文档
2019/08/26 Python
python几种常用功能实现代码实例
2019/12/25 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
python实现TCP文件传输
2020/03/20 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
幼儿园教师国培感言
2014/02/02 职场文书
党委工作总结2015
2015/04/27 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书