酷我音乐爬虫
前言
- 该爬虫爬取酷我音乐平台的可视音乐,可见即可爬,只是学习用途,部分内容可做参考,具体视情况而定!
一、执行脚本
import requests
import json
import urllib.parse # urllib.parse编码模块(将中文字符串编码的utf-8格式)
class Music(object):
def __init__(self, key):
self.key_vaule = dict() # 定义一个key_vaule字典
self.key_vaule['key'] = key # 将传入的key值存放到字典当中
self.key = urllib.parse.urlencode(self.key_vaule) # 使用urllib.parse.urlencode()函数编码成utf-8的格式
self.url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?' + self.key + '&pn=1&rn=30&httpsStatus=1&reqId=9c276060-99c7-11eb-9b5c-79933fe0f0c7'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'csrf': '9RU7EE2D56A',
'Referer': 'http://www.kuwo.cn/search/list?' + self.key,
'Cookie': '_ga=GA1.2.2104987776.1610890018; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1617860070,1617968883; _gid=GA1.2.1641072095.1617968883; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1618034833; kw_token=9RU7EE2D56A'
}
def get(self):
response = requests.get(self.url, headers=self.headers)
html = response.content.decode()
html_list = json.loads(html)
music_list = html_list['data']['list']
for item in music_list:
music_name = item['name']
music_rid = item['rid']
music_url = 'http://www.kuwo.cn/url?format=mp3&rid=' + str(
music_rid) + '&response=url&type=convert_url3&br=128kmp3&from=web&t=1618033091388&httpsStatus=1&reqId=eff9bed0-99be-11eb-8b83-7565842abc7c'
play_html = requests.get(url=music_url, headers=self.headers)
jx_html = json.loads(play_html.content.decode())
music_data = requests.get(jx_html['url'], headers=self.headers).content # 获取音乐的二进制文件
try:
with open('./music-1/' + music_name + '.mp3', 'wb') as music:
print('{}正在下载......'.format(music_name), end=" ")
music.write(music_data)
print('下载完毕!')
except Exception:
print('{}-----------下载出现错误!'.format(music_name))
if __name__ == '__main__':
name = input('请输入歌手名称: ')
music = Music(name)
music.get()
二、演示示例
