用Python写一个酷狗爬歌系统
今天我们用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写一个酷狗爬歌系统相关推荐
- 上班摸鱼用Python写一个酷狗音乐播放器
Python改变生活,科技改变世界. 这个五一好想出去浪啊,可惜工作不允许啊,只放了两天假,不得不又回到工作岗位了,虽然也没啥事,然后就上班摸鱼写了这个酷狗音乐播放器,自己一边听歌一边下载歌曲歌词也蛮 ...
- 网页mp3提取器_用Python写一个酷狗音乐下载器!
[这就是标题] 距离上一次发推送差不多有一个月了ヽ(ー_ー)ノ 做了一个小的酷狗音乐下载器,公众号内回复704就可以收到下载链接. 长下面这样. 双击打开,会提示让输入你要搜索的歌曲. 这里输入去流浪 ...
- 利用python写一个简单的双色球彩票系统
利用python写一个简单的双色球彩票系统 1.设置每次买的号码一样 写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1. 一张彩票是两块钱,用户可以选 ...
- 用Python写一个网络爬虫爬取网页中的图片
写一个爬虫爬取百度贴吧中一个帖子图片 网址:壁纸 用谷歌浏览器的开发工具检查网页,可以发现其每一张图片都有如下格式 <img class="BDE_Image" src=&q ...
- python写一个爬虫、爬取网站漫画信息_python爬取漫画
原博文 2017-05-31 00:56 − 抓取漫画的网址是:sf互动传媒 抓取漫画的由来也是看了知乎上有人说用爬取漫画,然后自己也玩玩 首页中每个漫画的url是类似这样存储的: 相关推荐 2019 ...
- 用Python写一个爬虫,爬取双色球开奖记录
好的,下面是一个简单的爬虫代码,它爬取了双色球开奖记录: import requests from bs4 import BeautifulSoupurl ="http://kaijiang ...
- 如何用Python写一个模拟的英雄联盟登陆系统!!!(详解)
while True:print("\t\t\t英雄联盟登陆界面\n")print("~*"*38)print("\t\t\t1.用户登陆\n&quo ...
- python 一键下载酷狗歌单
python 一键下载酷狗歌单 酷狗很多音乐下载都需要钱,于是我就想使用python进行爬取.在网上找了一圈,全是需要一首一首歌来找然后列出url.但是,谁又有耐心去找呢.于是我花了2小时写了这个脚本 ...
- python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...
python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...
最新文章
- 语言兔子繁衍问题讲解_二年级思维数学:位置问题,找到重复部分是解题关键...
- 分布式选举协议:Raft
- 金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数(修正版07-05-10)
- 数字水印技术 概念 应用及现状
- 技术入股创业一年,家庭收入变成负5万
- http://nxlhero.blog.51cto.com/962631/1666250?plg_nld=1plg_uin=1plg_auth=1plg_nld=1plg_usr=1plg_...
- uniAPP 禁用原生导航栏 和 获取状态栏高度 和 使用(间距掉)
- i2c-test使用说明
- JavaScript 练手小技巧:页面高亮操作提示和蒙板
- ie浏览器打不开闪退_ie浏览器点开闪退_ie浏览器打不开?就是闪退.别的可以_ie浏览器打不开闪退...
- win10解决PL2303串口错误方法
- Java里面jvr_微信小程序java解密报异常Key length not 128/192/256 bits
- 拼多多 2020校园招聘 二维表第k大数(二分)
- (已更新)柒微自动发卡系统源码
- USBtoSerial 产品的选择及安装
- 认识Fitnesse
- linux中文件权限 组,linux中文件权限格式与chmod命令以及用户和用户组的管理
- 5.1.2 运输层的两个重要协议
- 化妆品二维码防伪标签印刷制作公司
- ryu实例---网络时延探测