今天我们用Python来写一个简单的酷狗下载程序

我将这个程序打包成exe文件,有兴趣的可以看下。

链接:https://pan.baidu.com/s/1K2ETIL09-Xwpe4pBtojNiQ
提取码:1b1o

我们先上代码,看下步骤:

import requests
import json
import os
import urllib.parse
#j为歌曲标头
j=1
class KuGou:#初始化def __init__(self,word):#创建目录path="F:/酷狗歌曲下载/"   #路径可以自己定义if not os.path.exists(path):os.mkdir(path)self.path=pathself.word=wordword1= urllib.parse.quote(word)#带参数访问网址self.url="https://songsearch.kugou.com/song_search_v2?callback=jQuery112404383246257004936_1550576119140&keyword={}&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1550576119142".format(word1)#发出requests请求def requests_get(self):r=requests.get(self.url)r.encoding="utf-8"self.req = r.text
#         print(self.req)#获取并且展示歌曲信息def show_song(self):global j
#         songID_list={}songhash_list={}  #hash列表song_name={}    #歌曲名字# json文件信息  kg=json.loads(self.req.lstrip("jQuery112404383246257004936_1550576119140(").rstrip().rstrip(r')'))self.kg=kgfor song in kg['data']['lists']:print("{0}————{1}".format(j,song['SongName']))song_name[str(j)]=song['SongName']songhash_list[str(j)]=song['FileHash']j+=1self.song_name=song_nameself.songhash_list=songhash_list
#         self.songID_list=songID_list
#         print(songhash_list)
#下载歌曲def download_song(self):num=input("您想下载哪首歌(输数字):")url="http://www.kugou.com/yy/index.php?r=play/getdata&hash={}".format(self.songhash_list[num])hash_res=requests.get(url)hash_js=hash_res.json()play_url=hash_js['data']['play_url']
#         print(play_url)with open(self.path+self.song_name[num]+".mp3","wb") as f:f.write(requests.get(play_url).content)print("《{}》下载完成".format(self.song_name[num]))#选择是否继续爬取def exit(self):str1=input("继续下载(y),还是退出(n):")return str1if __name__ == "__main__":print("欢迎来到酷狗下载系统")word=input("请输入歌手名:")
#     word="杨宗纬"pachong=KuGou(word)pachong.requests_get()pachong.show_song()pachong.download_song()str1=pachong.exit()while str1!="n":if str1 == "y":pachong.download_song()str1 = pachong.exit()elif str1 == "n":print("已退出")else:print("输入错误,请重新输入!")str1 = pachong.exit()

效果如图:

我们分为 步走:

  • 1、创建目录
  • 2、发出requests请求
  • 3、获取歌曲信息(歌名,歌曲链接)
  • 4、下载歌曲

第一步,创建目录,带参数访问网址

import requests
import json
import os
import urllib.parse
#j为歌曲标头
j=1
class KuGou:#初始化def __init__(self,word):#创建目录path="F:/酷狗歌曲下载/"   #路径可以自己定义if not os.path.exists(path):os.mkdir(path)self.path=pathself.word=wordword1= urllib.parse.quote(word)#带参数访问网址self.url="https://songsearch.kugou.com/song_search_v2?callback=jQuery112404383246257004936_1550576119140&keyword={}&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1550576119142".format(word1)

我们来解析下酷狗的网址:

https://songsearch.kugou.com/song_search_v2?callback=jQuery112404383246257004936_1550576119140&keyword= {“这是关键字”}&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1550576119142

第二步,发出requests请求

#发出requests请求def requests_get(self):r=requests.get(self.url)r.encoding="utf-8"self.req = r.text
#         print(self.req)

第三步,获取歌曲信息

    #获取并且展示歌曲信息def show_song(self):global j
#         songID_list={}songhash_list={}  #hash列表song_name={}    #歌曲名字# json文件信息  kg=json.loads(self.req.lstrip("jQuery112404383246257004936_1550576119140(").rstrip().rstrip(r')'))self.kg=kgfor song in kg['data']['lists']:print("{0}————{1}".format(j,song['SongName']))song_name[str(j)]=song['SongName']songhash_list[str(j)]=song['FileHash']j+=1self.song_name=song_nameself.songhash_list=songhash_list
#         self.songID_list=songID_list
#         print(songhash_list)

song_name是一个字典,存放歌曲名字,格式:{‘第几首’:“歌曲名字”}
songhash_list是一个字典,存放歌曲链接的hash参数(很重要)

第四步,下载歌曲(加后面的代码)

#下载歌曲def download_song(self):num=input("您想下载哪首歌(输数字):")url="http://www.kugou.com/yy/index.php?r=play/getdata&hash={}".format(self.songhash_list[num])hash_res=requests.get(url)hash_js=hash_res.json()play_url=hash_js['data']['play_url']
#         print(play_url)with open(self.path+self.song_name[num]+".mp3","wb") as f:f.write(requests.get(play_url).content)print("《{}》下载完成".format(self.song_name[num]))#====================================================================================================#选择是否继续爬取def exit(self):str1=input("继续下载(y),还是退出(n):")return str1if __name__ == "__main__":print("欢迎来到酷狗下载系统")word=input("请输入歌手名:")
#     word="杨宗纬"pachong=KuGou(word)pachong.requests_get()pachong.show_song()pachong.download_song()str1=pachong.exit()while str1!="n":if str1 == "y":pachong.download_song()str1 = pachong.exit()elif str1 == "n":print("已退出")else:print("输入错误,请重新输入!")str1 = pachong.exit()

您的支持,是我前进最大的动力!

用Python写一个酷狗爬歌系统相关推荐

  1. 上班摸鱼用Python写一个酷狗音乐播放器

    Python改变生活,科技改变世界. 这个五一好想出去浪啊,可惜工作不允许啊,只放了两天假,不得不又回到工作岗位了,虽然也没啥事,然后就上班摸鱼写了这个酷狗音乐播放器,自己一边听歌一边下载歌曲歌词也蛮 ...

  2. 网页mp3提取器_用Python写一个酷狗音乐下载器!

    [这就是标题] 距离上一次发推送差不多有一个月了ヽ(ー_ー)ノ 做了一个小的酷狗音乐下载器,公众号内回复704就可以收到下载链接. 长下面这样. 双击打开,会提示让输入你要搜索的歌曲. 这里输入去流浪 ...

  3. 利用python写一个简单的双色球彩票系统

    利用python写一个简单的双色球彩票系统 1.设置每次买的号码一样 写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1. 一张彩票是两块钱,用户可以选 ...

  4. 用Python写一个网络爬虫爬取网页中的图片

    写一个爬虫爬取百度贴吧中一个帖子图片 网址:壁纸 用谷歌浏览器的开发工具检查网页,可以发现其每一张图片都有如下格式 <img class="BDE_Image" src=&q ...

  5. python写一个爬虫、爬取网站漫画信息_python爬取漫画

    原博文 2017-05-31 00:56 − 抓取漫画的网址是:sf互动传媒 抓取漫画的由来也是看了知乎上有人说用爬取漫画,然后自己也玩玩 首页中每个漫画的url是类似这样存储的: 相关推荐 2019 ...

  6. 用Python写一个爬虫,爬取双色球开奖记录

    好的,下面是一个简单的爬虫代码,它爬取了双色球开奖记录: import requests from bs4 import BeautifulSoupurl ="http://kaijiang ...

  7. 如何用Python写一个模拟的英雄联盟登陆系统!!!(详解)

    while True:print("\t\t\t英雄联盟登陆界面\n")print("~*"*38)print("\t\t\t1.用户登陆\n&quo ...

  8. python 一键下载酷狗歌单

    python 一键下载酷狗歌单 酷狗很多音乐下载都需要钱,于是我就想使用python进行爬取.在网上找了一圈,全是需要一首一首歌来找然后列出url.但是,谁又有耐心去找呢.于是我花了2小时写了这个脚本 ...

  9. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

最新文章

  1. 多传感器融合之滤波(二)EKF
  2. SpringBoot最新面试题及答案,汇总版
  3. 20款响应式的 HTML5 网页模板【免费下载】
  4. eclipse项目迁移到android studio(图文最新版)
  5. 歌一定要带监听耳机吗_在演唱会上,歌手耳朵里戴的不是“耳机”,而是这个东西...
  6. 【翻译】怎样使用css制作迷人的button
  7. AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…
  8. Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)
  9. Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作...
  10. loadrunner mysql_LoadRunner访问Mysql数据库
  11. html 多个mp3,HTML5 audio 如何实现播放多个MP3音频
  12. 学习使用windows live write.
  13. web前端效率提升之浏览器与本地文件的映射-遁地龙卷风
  14. np.arange()函数
  15. 第五届“飞思卡尔”智能车竞赛分赛区赛后总结
  16. Go:【学习笔记】Go 语言结构
  17. “一对一直播软件”的开发,离不开直播源码开发+系统搭建
  18. Visual Studio 2008 无法安装解决办法
  19. 完整的芯片反向设计流程原来是这样的!(实例讲解)
  20. buildroot 修改和保存xxx_defconfig make savedconfig错误解决

热门文章

  1. YouTube创建频道一直转圈圈的一种解决思路
  2. 腾讯云~云存储和数据万象CI 实战
  3. JS起名字要小心,不然会照成不兼容
  4. Tcp头部字段,与ip层关系,与udp区别,使用场景,Tcp状态
  5. php7飞机,飞机7700紧急代码是什么意思
  6. webservice技术的预言
  7. performSelector和forwardInvocation之消息的派发和转发
  8. php eof bof,VB中Recordset之BOF与EOF详解
  9. 特征值和特征向量在现代控制理论的简单应用
  10. python实现图像灰度处理