Python爬虫精进-第5关-头号粉丝(QQ音乐-歌手对应歌曲)

#Python爬虫精进-第5关-头号粉丝(QQ音乐-歌手对应歌曲)

python学习日记
任务目标:爬取自己喜欢的歌手音乐信息

代码1(只调用requests):

import requests
#调用requests模块
singer = input('你喜欢的歌手是谁呀?请告诉我!')
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
for x in range(10):
#range()决定了调取前几页,此处为5或者10.
    params = {
    'ct':'24',
    'qqmusic_ver': '1298',
    'new_json':'1',
    'remoteplace':'txt.yqq.song',
    'searchid':'70717568573156220',
    't':'0',
    'aggr':'1',
    'cr':'1',
    'catZhida':'1',
    'lossless':'0',
    'flag_qc':'0',
    'p':str(x+1),
    'n':'20',
    'w':'',
    'g_tk':'714057807',
    'loginUin':'0',
    'hostUin':'0',
    'format':'json',
    'inCharset':'utf8',
    'outCharset':'utf-8',
    'notice':'0',
    'platform':'yqq.json',
    'needNewCode':'0'
    }
    params['w'] = singer
    # 将参数封装为字典
    res_music = requests.get(url,params=params)
    # 调用get方法,下载这个列表
    json_music = res_music.json()
    # 使用json()方法,将response对象,转为列表/字典
    list_music = json_music['data']['song']['list']
    # 一层一层地取字典,获取歌单列表
    for music in list_music:
    # list_music是一个列表,music是它里面的元素
        print(music['name'])
        # 以name为键,查找歌曲名
        print('所属专辑:'+music['album']['name'])
        # 查找专辑名
        print('播放时长:'+str(music['interval'])+'秒')
        # 查找播放时长
        print('播放链接:https://y.qq.com/n/yqq/song/'+music['mid']+'.html\n\n')
        # 查找播放链接

代码2(引用自delusion,侵删):

import requests
from urllib.request import quote

n=0
singer=input('你想查询哪位歌手的名字?')
singer_code=quote(singer)
res=requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=55888227641662843&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w={}&g_tk=1676601595&loginUin=835926124&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0'.format(singer_code))
html=res.json()
total_num=html['data']['song']['totalnum']#一共有多少首歌
song_list= html['data']['song']['list']#一页有几首歌,我的电脑页面是10首,别的可能不一样
total_page=total_num//(len(song_list))+1#一共有多少页
for i in range(1,total_page+1):
        res=requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=55888227641662843&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p={}\
                &n=10&w={}&g_tk=1676601595&loginUin=835926124&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0'.format(i,singer_code))
        html=res.json()
        songs=html['data']['song']['list']
        for song in songs:
                n+=1
                print(n,end='\t')
                print(song['name'],end='\t')
                print('所属专辑:'+song['album']['name'],end='\t')
                print('播放时长:'+str(song['interval'])+'秒',end='\t')
                print('播放链接:'+'https://y.qq.com/n/yqq/song/'+song['mid']+'.html')

你可能感兴趣的:(Python,#爬虫学习)