Python爬虫实战:网易云歌曲下载,小白看了都说好!

文章目录

    • 一、网页查看
    • 二、网页分析
    • 三、完整代码及代码分析
    • 四、图片辅助分析
    • 五、运行结果

更多博主开源爬虫教程目录索引

一、网页查看

进入网易云
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第1张图片
搜索华晨宇或者其他的你喜欢的歌手都可以,这里我以华晨宇为例
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第2张图片

点击单曲
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第3张图片

这就是我们要爬取的音乐了

Python爬虫实战:网易云歌曲下载,小白看了都说好!_第4张图片

二、网页分析

音乐数据是动态加载出来的
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第5张图片

Python爬虫实战:网易云歌曲下载,小白看了都说好!_第6张图片
查看请求为POST请求,那肯定有表单数据
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第7张图片
那么我们发送请求的时候要带上这些参数
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第8张图片


三、完整代码及代码分析

import requests
import os

#请求头信息
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36",
}

#表单数据
data = {
    "params": "照上面填",
    "encSecKey": "照上面填"
}

#发送POST请求
# .json()是将请求得到的json数据转为python中的字典数据,参考图1
response = requests.post(url="https://music.163.com/weapi/cloudsearch/get/web?csrf_token=", headers=headers,data=data).json()

#定义图片保存路径
path = "./音乐"
if not os.path.exists(path):  # 判断,是否存在此路径,若不存在则创建,注意这个创建的是文件夹
    os.makedirs(path)

#参考图2
#遍历
for data in response["result"]["songs"]:
	#参考图3
    name = data["name"]
    id = data["id"]
    
    #拼接外链
    url = "https://api.imjad.cn/cloudmusic/?type=song&id=" + str(id)
    response_data = requests.get(url=url)
    #参考图4
    music_url = response_data.json()["data"][0]["url"]
    
    #有的歌曲下载不了就会抛异常,这时我们直接continue
    try:
        res = requests.get(url=music_url,headers=headers).content
    except:
        continue
    # 保存图片
    with open(path + "/" + name + ".mp3", 'wb')as f:  # 以wb方式打开文件,b就是binary的缩写,代表二进制
        f.write(res)

四、图片辅助分析

图1
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第9张图片

图2
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第10张图片
图3
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第11张图片

图4(外链请求结果)
Python爬虫实战:网易云歌曲下载,小白看了都说好!_第12张图片

五、运行结果

Python爬虫实战:网易云歌曲下载,小白看了都说好!_第13张图片

小提示:如果小伙伴们想下载自己喜欢歌手的歌曲,只需更换发送POST的请求参数即可,参数找寻方法也教给大家了。


觉得博主写的不错的读者大大们,可以点赞关注和收藏哦,你们的支持是我写作最大的动力!

更多博主开源爬虫教程目录索引

在这里插入图片描述

你可能感兴趣的:(Python爬虫,python,post,ajax,数据分析,爬虫)