酷狗音乐下载
import requests,re,json #class 代表创建类 class Kugou:#类的第一个字母尽量大写,易于区分 def __init__(self): #设置函数本身私有成员 #网址可以拼接,也可以用format函数(格式化:把代码中{}替换{}可以写01234排序,也可以不写) #协议头header #ua---浏览器 ,很多网页需要加 #Referer 来路,来自于哪访问此网站,有时候用到 #Host 忘了怎么表达,不算常用 #Content - Type 一般post需要用这个,常用 #cookies 你懂的,一般必用 self.header = { "user-agent" : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0' } #搜索接口 self.url = 'http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword={0}&page={1}&pagesize={2}' #下载试听接口 self.play_url = 'http://www.kugou.com/yy/index.php?r=play/getdata&hash={}' #做个字典 self.song_info = { '歌名': None, 'play_url': None } #声明函数,word就是{0},shu后面加了=‘20’表示默认搜索20个 def getlist(self,word,page,shu='20'): # url = 'http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword='+word+'&page='+page+'&pagesize=20' #requests模块请求返回文本 req= requests.get(self.url.format(word,page,shu), headers=self.header).text #print(req) #json解析一下 jiexi = json.loads(req) #for循环取出名字与hash for x in jiexi['data']['info']: filename = x['filename'] hash = x['hash'] #用play——url + hash构建新的url,访问返回json数据 r=requests.get(self.play_url.format(hash)).text #解析,取出播放和下载的链接 #因为是在循环内,所以会取出多个 play_url=json.loads(r)['data']['play_url'] #data = {x['filename']:x['hash']} #print(data) #做一个新的字典 new_info = {'歌名':filename,'play_url':play_url} #更新字典 self.song_info.update(new_info) #yield self.song_info #打印新字典 print(self.song_info) #req = requests.get(self.play_url.format(),headers=self.header).text #入口 if __name__ == '__main__': #a=Kugou() 属于实例化类,如果用到类的话,貌似是必须要做实例化,如果不调用类好像不用也行,不过十分推荐做实例化 #self表示的是类本身,必须要学会这个,感觉超级好用 a = Kugou() #然后就是调用类里面的getlist函数了,推荐加上参数名字,这样乱序也不怕,shu因为后面加了值,所以代表可空,空就是默认20个 a.getlist(page='1', word=input('请输入要搜索的歌曲:'))