【python爬虫实战案例】爬网易云音乐四大榜单!
一、爬取目标
本次爬取的目标页面是,网易云音乐的四个排行榜: 网易云音乐榜单
本次分析,依然从网页接口入手,按F12进入开发者模式:
刷新一下页面,在右侧可以看到每首歌曲的数据,所以就对这个目标链接发送请求。
二、代码分解
首先,导入需要用到的库:
import requests # 发送请求
import pandas as pd # 存入excel数据
from time import sleep # 等待间隔,防止反爬
import random # 随机等待
然后,定义一个请求地址:
# 请求地址
url = 'https://interface.music.163.com/weapi/v6/playlist/detail'
定义一个请求头request header:
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Mobile Safari/537.36',
'accept': 'application/json, text/javascript',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'accept-encoding': 'gzip, deflate, br',
'content-type': 'application/x-www-form-urlencoded',
'origin': 'https://y.music.163.com/',
'referer': 'https://y.music.163.com/',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
'sec-ch-ua-mobile': '?1',
'sec-ch-ua-platform': '"Android"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'cookie': r"换成自己的cookie哦"
}
然后,还需要定义请求参数,params,这也是这个爬虫的关键,经过分析,4个榜单的参数都不一样,以飙升榜为例:
下面是发送POST请求:
# 发送POST请求
r = requests.post(url, headers=headers, params=v)
# 用json格式接收请求数据
json_data = r.json()
item_list = json_data['playlist']['tracks']
后面,就是解析每个字段信息了,不再赘述。
最后,保存Excel数据:
df = pd.DataFrame(
'排名': order_list,
'标题': music_name,