import requests
import json
import os
import urllib.parse
#j为歌曲标头
j=1
class KuGou:
#初始化
def init(self,word):
#创建目录
path="E:/music/" #路径可以自己定义
if not os.path.exists(path):
os.mkdir(path)
self.path=path
self.word=word
word1= 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=kg
for 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+=1
self.song_name=song_name
self.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 str1
if 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()
运行出现以下问题:
PS C:\Users\Administrator> & python c:/Users/Administrator/Desktop/用Python写一个酷狗爬歌系统.py
欢迎来到酷狗下载系统
请输入歌手名:余姚
1————余姚
2————十载清明
3————余姚杨梅中国红
4————余姚后生和慈溪姑娘「黑色情人节版」
5————余姚这场雨伐晓得要落到什个辰光
6————余姚这场雨伐晓得要落到什个辰光 (伴奏)
7————第383集 危险又亲切的今余姚
8————最爱杨梅在余姚 (伴奏)
9————余姚赋
10————余姚杨梅中国红 (伴奏)
11————最爱杨梅在余姚
12————天上无云不下雨 (原版伴奏)
13————余姚方言歌曲涛声依旧
14————余慈方言歌曲 大姑娘
15————方言歌曲欢迎来梁弄走走
16————“余”你同在,“姚”在我心(钢琴版)
17————十里梅乡
18————十里梅乡 (伴奏)
您想下载哪首歌(输数字):9
Traceback (most recent call last):
File "c:/Users/Administrator/Desktop/用Python写一个酷狗爬歌系统.py", line 71, in
pachong.download_song()
File "c:/Users/Administrator/Desktop/用Python写一个酷狗爬歌系统.py", line 52, in download_song
play_url=hash_js['data']['play_url']
TypeError: list indices must be integers or slices, not str