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

本文以爬取QQ音乐播放器中周深的歌为例,为了避免服务器过大的负载,我们只爬取五页歌单;
将爬取的数据用openpyxl模块存储到excel表
一、
1、用谷歌浏览器打开QQ音乐,搜索“周深”,打开开源界面,查看页源代码
python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

2、刷新一下网页,在“name”中找到下面比较大的文件,有时候找好几个才能找到(这个需要注意挑选查看"data-song-list"中有周深的歌单,如下图)
python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

3、查看"data-song-list"中有周深的歌单,里面是我们需要爬取的信息,如下图
python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

list里面的信息:
python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

4、查看Headers信息,查到我们需要的url、请求头信息、url中关于周深歌单的参数等信息
python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

根据上图得到的信息,我们把关于周深歌单的重要参数修改为代码形式,方便我们调用(注:python中存储请求头信息格式是字典形式)
5、根据开源工具得出请求头(Request Headers)信息:user-agent ,如下图。
python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

二、根据我们查阅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爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单】python爬虫大作业|python爬虫大作业、爬取一位歌手的所有歌曲_python爬取一位歌星的歌单
文章图片

    推荐阅读