 
 
研究了一段時間酷狗音樂的接口,完美破解了其vip音樂下載方式,想著能更好的追求開源,故寫下此篇文章,本文僅供學習參考。雖然沒什么技術含量,但都是自己一點一點碼出來,一點一點抓出來的。
一、綜述:
根據酷狗的搜索接口以及無損音樂下載接口,做出爬蟲系統。采用flask框架,前端提取搜索關鍵字,后端調用爬蟲系統采集數據,并將數據前端呈現;
運行環境:windows/linux python2.7
二、爬蟲開發:
通過抓包的方式對酷狗客戶端進行抓包,抓到兩個接口:
1、搜索接口:
http://songsearch.kugou.com/song_search_v2?keyword={關鍵字}page=1
這個接口通過傳遞關鍵字,其返回的是一段json數據,數據包含音樂名稱、歌手、專輯、總數據量等信息,當然最重要的是數據包含音樂各個品質的hash。
 
 
默認接口返回的數據只包含30首音樂,為了能拿到所有的數據,只需要把pagesize更改就可以,所以我提取了總數據數量,然后再次發動一次數據請求,拿到全部的數據。當然,這個總數據量也就是json中的total也是作為搜索結果的依據,如果total == 0 則判斷無法搜索到數據。
搜索到數據后,我就要提取無損音樂的hash,這個hash是音樂下載的關鍵,無損音樂hash鍵名:SQFileHash,提取到無損hash(如果是32個0就表示None),我把他的名稱、歌手、hash以字典形式傳遞給下一個模塊。
代碼實現:
a.請求模塊(復用率高):
# coding=utf-8import requestsimport jsonheaders = {  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',  'Accept-Encoding': 'gzip, deflate',  'Accept-Language': 'zh-CN,zh;q=0.9',  'Cache-Control': 'max-age=0',  'Connection': 'keep-alive',  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '         'Chrome/63.0.3239.132 Safari/537.36',}def parse(url):  ret = json.loads(requests.get(url, headers=headers, timeout=5).text)  # 返回的是已經轉換過后的字典數據  return retif __name__ == '__main__':  parse()b.搜索模塊
# coding=utf-8import copyimport MusicParsedef search(keyword):  search_url = 'http://songsearch.kugou.com/song_search_v2?keyword={}page=1'.format(keyword)  # 這里需要判斷一下,ip與搜索字段可能會限制搜索,total進行判斷  total = MusicParse.parse(search_url)['data']['total']  if total != 0:    search_total_url = search_url + '&pagesize=%d' % total    music_list = MusicParse.parse(search_total_url)['data']['lists']    item, items = {}, []    for music in music_list:      if music['SQFileHash'] != '0'*32:        item['Song'] = music['SongName'] # 歌名        item['Singer'] = music['SingerName'] # 歌手        item['Hash'] = music['SQFileHash'] # 歌曲無損hash        items.append(copy.deepcopy(item))    return items  else:    return Noneif __name__ == '__main__':  search()            
新聞熱點
疑難解答