qq音乐爬虫

没事爬点歌来听听,不管收费免费大小通吃,直接上代码,爬取思路在源码注释中

import requests
import random
import json
import time

starturl = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg?picmid=1&rnd={0}&g_tk=5381&jsonpCallback=getPlaylist&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&categoryId=10000000&sortId=5&sin={1}&ein={2}'
rnd = random.random()
sin = 0
ein = 29


'''
   一.请求歌单首页,获取所有歌单信息  dissid
'''
while True:
    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
        }
    headers['referer'] = 'https://y.qq.com/portal/playlist.html'
    disslist = requests.get(starturl.format(rnd, sin, ein),headers = headers).text
    disslist = json.loads(disslist.strip('getPlaylist()'))
    # print(disslist)



    for i in disslist['data']['list']:
        dissid = i['dissid']
        dissName = i['dissname']
    # print(dissidlist)

        '''
             二.通过dissid获取  songmid strMediaMid
        '''
        dissurl = 'https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&disstid={0}&format=jsonp&g_tk=5381&jsonpCallback=playlistinfoCallback&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0'
        headers['referer'] = 'https://y.qq.com/n/yqq/playsquare/{0}.html'.format(dissid)
        song = requests.get(dissurl.format(dissid), headers = headers).text
        song = json.loads(song.strip('playlistinfoCallback()'))



        num = 1
        for s in song['cdlist'][0]['songlist']:
            # 获取songmid
            songmid = s['songmid']
            # 获取歌曲名
            songName = s['songname']
            # 获取strMediaMid
            strMediaMid = s['strMediaMid']
            #filename
            filename = 'C400' + str(s['strMediaMid']) + '.m4a'

            '''
                三.获取vkey
            '''
            vkeyurl = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback&uin=0&songmid={0}&filename={1}&guid=7670101313'
            #发送请求
            headers['referer'] = 'https://y.qq.com/portal/player.html'
            responses = requests.get(vkeyurl.format(songmid, filename), headers= headers).text
            responses = json.loads(responses.strip('MusicJsonCallback()'))
            # print(responses)
            # 提取vkey
            for vk in responses['data']['items']:
                vkey = vk['vkey']

                '''
                四.通过vkey爬取音乐
                '''
                musicurl = 'http://dl.stream.qqmusic.qq.com/{0}?vkey={1}&guid=7670101313&uin=0&fromtag=66'
                del headers['referer']
                result = requests.get(musicurl.format(filename, vkey),headers = headers, stream = True).raw.read()
                with open('music/'+songName+'.mp3', 'wb') as file:
                    file.write(result)
                # time.sleep(0.1)
            print('{0}歌单的第{1}歌-歌曲名称:{2}'.format(dissName, num, songName))
            num += 1
    if sin < disslist['data']['sum']:
        sin+=30
        ein+=30
        rnd = random.random()
        time.sleep(1)
    else:
        break

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QQ音乐爬虫推荐系统是指通过爬取QQ音乐平台上的各种音乐内容数据,并基于此数据进行推荐系统的开发与应用。 首先,爬虫是指通过程序自动获取网页上的数据的技术。爬取QQ音乐的数据可以包括歌曲的基本信息、歌手的作品、用户的播放习惯等等。这些数据可以通过程序从QQ音乐平台上获取,然后进行清洗和存储。 其次,推荐系统是根据用户的个性化需求和历史行为,在大量数据的基础上给用户生成个性化推荐结果的系统。通过分析爬取到的QQ音乐数据,可以利用推荐算法来为用户推荐他们可能喜欢的音乐。 在QQ音乐爬虫推荐系统中,可以根据不同的推荐策略来进行推荐,如基于内容的推荐、协同过滤推荐等。基于内容的推荐是根据歌曲的特征信息,如歌曲的风格、歌手的分类、歌曲的时长等,来计算相似度,然后推荐用户可能喜欢的相似歌曲。协同过滤推荐则是根据用户的历史行为和其他用户之间的行为相似性,来推荐具有相似兴趣的用户喜欢的歌曲。 此外,还可以加入其他因素来进行推荐,如用户的地域、时间等。例如,可以根据用户所在地区的热门歌曲推荐一些本地区用户喜欢的音乐;或者根据用户的时间偏好,比如上午推荐轻松舒缓的音乐,晚上推荐安静放松的音乐等。 总的来说,QQ音乐爬虫推荐系统可以通过爬取QQ音乐的数据,并基于推荐算法和其他因素给用户个性化的推荐结果,提高用户的使用体验和音乐发现的便利性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值