Python requests 爬取qq音乐URL

# -*- coding: utf-8 -*-
import json
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
    "cookie": "pgv_pvi=1768340480; RK=/DV3MHhaP4; OUTFOX_SEARCH_USER_ID_NCOO=1311970987.4293392; eas_sid=r185O1f0W2v3I826X7S3i6s4M6; tvfe_boss_uuid=3d6fb3025b05dd4c; pgv_pvid=6870059684; ptcz=c4e4978e7040d9123825bca6bbaeedab3d67c8059367c90266f7075c7e226fbf; o_cookie=1013975672; pac_uid=1_1013975672; pt2gguin=o1013975672; uin=o1013975672; ptisp=ctc; pgv_si=s3445758976; pgv_info=ssid=s5839415696; rv2=80A3CC87FD545565845367569D5B72DBE8A6BB706CA754F38C; property20=001BCA54C0D46A670EA6D504DEEE2934BCF965F9788E515290F7832683AF74743B21D9CC150AE51E; skey=@r7YnIjzF8; luin=o1013975672; lskey=000100007cc7bb12bd64b8e34052621ea8ced8a29328c524e523179fd167a533e132f6e34d36ed1ab582ceda; yxzj_a20180122snkk_role_1013975672=%7B%22uOpenId%22%3A%22C850F193A25C75E4D3F1A53A03221EFC%22%2C%22sArea%22%3A%221%22%2C%22sPartition%22%3A%221259%22%2C%22sAreaName%22%3A%22%u738B%u65CF%u8840%u7EDF%22%7D; ts_refer=ADTAGbaiduald; ts_uid=9186083990; yq_index=0; yqq_stat=0; ts_last=y.qq.com/portal/playlist.html",
    "referer": "https://y.qq.com/portal/playlist.html"
}


# 首先获取歌单列表
def crawl_music_list():
    music_list_url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg?picmid=1&rnd=0.1981010046443148&g_tk=584906688&jsonpCallback=getPlaylist&loginUin=1013975672&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&categoryId=165&sortId=5&sin=0&ein=29'
    response = requests.get(music_list_url, headers=headers)
    response.encoding = 'utf-8'
    data_str = response.text
    data_str = data_str.replace('getPlaylist(', '')
    data_str = data_str[:-1]
    data = json.loads(data_str)
    music_list = data['data']['list']
    for each in music_list:
        dissid = each['dissid']
        dissname = each['dissname']
        print('************开始获取歌单:{}**************'.format(dissname))
        crawl_music_info(dissid)


# 根据歌单id,获取一个歌单中每首歌的信息
def crawl_music_info(dissid):
    music_info_url = 'https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&disstid={}&format=jsonp&g_tk=584906688&jsonpCallback=playlistinfoCallback&loginUin=1013975672&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0'.format(
        dissid)
    response = requests.get(music_info_url, headers=headers)
    response.encoding = 'utf-8'
    data_str = response.text
    data_str = data_str.replace('playlistinfoCallback(', '')
    data_str = data_str[:-1]
    data = json.loads(data_str)
    songlist = data['cdlist'][0]['songlist']
    for song in songlist:
        songname = song['songname']
        singer = ';'.join([each['name'] for each in song['singer']])
        albumname = song['albumname']
        song_url = 'https://y.qq.com/n/yqq/song/' + song['strMediaMid']+'.html'
        print('*************')
        print(u'歌曲名\t' + songname)
        print(u'专辑\t' + albumname)
        print(u'URL\t' + song_url)


if __name__ == "__main__":
    crawl_music_list()

猜你喜欢

转载自blog.csdn.net/qq_38691608/article/details/79384276