酷我音乐爬虫

酷我音乐爬虫

前言

  • 该爬虫爬取酷我音乐平台的可视音乐,可见即可爬,只是学习用途,部分内容可做参考,具体视情况而定!

一、执行脚本

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()

二、演示示例

posted @ 2021-04-10 20:34  廿九九  阅读(577)  评论(0)    收藏  举报