python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单

本文以爬取QQ音乐播放器中周深的歌为例,为了避免服务器过大的负载,我们只爬取五页歌单;

将爬取的数据用openpyxl模块存储到excel表

一、

1、用谷歌浏览器打开QQ音乐,搜索“周深”,打开开源界面,查看页源代码

2、刷新一下网页,在“name”中找到下面比较大的文件,有时候找好几个才能找到(这个需要注意挑选查看"data-song-list"中有周深的歌单,如下图)

3、查看"data-song-list"中有周深的歌单,里面是我们需要爬取的信息,如下图

list里面的信息:

4、查看Headers信息,查到我们需要的url、请求头信息、url中关于周深歌单的参数等信息

根据上图得到的信息,我们把关于周深歌单的重要参数修改为代码形式,方便我们调用(注:python中存储请求头信息格式是字典形式)

5、根据开源工具得出请求头(Request Headers)信息:user-agent ,如下图。

二、根据我们查阅HTML网页信息,下面进行代码展示:

#导入模块

import requests

import openpyxl

#创建excel表,用于存储爬取的数据

wb=openpyxl.Workbook()

sheet=wb.active

sheet.title='zhoushen'

sheet['A1']='歌名'

sheet['B1']='所属专辑'

sheet['C1']='播放时长'

sheet['D1']='播放链接'

#上图中得到的请求url

url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'

#我们只爬取5页歌单,避免服务器负载过大

for x in range(5):

params = {

'ct': '24',

'qqmusic_ver': '1298',

'new_json': '1',

'remoteplace': 'txt.yqq.song',

'searchid': '61766693544760980',

't': '0',

'aggr': '1',

'cr': '1',

'catZhida': '1',

'lossless': '0',

'flag_qc': '0',

'p': str(x + 1),

'n': '10',

'w': '周深',

#'g_tk_new_20200303': '5381'

'g_tk': '5381',

'loginUin': '0',

'hostUin': '0',

'format': 'json',

'inCharset': 'utf8',

'outCharset': 'utf-8',

'notice': '0',

'platform': 'yqq.json',

'needNewCode': '0'

}

headers={

'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36'

}

#连接QQ音乐

res_music = requests.get(url,headers=headers,params=params)

#获取json(列表/字典写成的字符串)存储的信息

json_music = res_music.json()

#根据以上图中信息的数据结构提取网页信息

list_music = json_music['data']['song']['list']

for music in list_music:

name=music['name']

edition=music['album']['name']

time=str(music['interval'])

link='https://y.qq.com/n/yqq/song/' + music['file']['media_mid'] + '.html\n\n'

#将获取的信息逐一添加到excel活动表中

sheet.append([name,edition,time,link])

print('歌名:'+name+'专辑:'+edition+'时长:'+time+'链接:'+link)

#保存excel表数据

wb.save('Zhoushen.xlsx')

三、上面的代码执行后,周深的歌单信息就保存在excel表中了,下面是我们爬取周深的歌单。

你可能感兴趣的:(python爬虫大作业,爬取一位歌手的所有歌曲)