利用python获取网易云音乐的歌曲,原理+代码!简单易懂

这篇具有很好参考价值的文章主要介绍了利用python获取网易云音乐的歌曲,原理+代码!简单易懂。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于爬取网易云音乐的歌曲,有一些思路。代码在末尾哦

一般来说,爬取音乐,采取正则表达式或者直接调用API,这里采用API

首先导入需要用到的库

from lxml import etree
import requests
import json
from concurrent.futures import ThreadPoolExecutor

然后我们要知道,要爬取音乐就要先获取到API接口,但是我没有找到官方发布的API,

但是找到了网易云音乐的搜索接口,该接口的 URL 是:

search_url = f'https://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s={keyword}&type=1&offset=0&total=true&limit=5'

原理:使用了 requests 库发送 HTTP 请求,通过访问网易云音乐的搜索接口(https://music.163.com/api/search/get/web)来获取搜索结果的 JSON 数据。然后,使用 json 模块解析 json 数据,提取所需的歌曲信息

既然明白了原理,那接下来就好办了

# 创建一个线程池
pool = ThreadPoolExecutor(max_workers=10)
# 构造下载链接
url = f'http://music.163.com/song/media/outer/url?id={id}'
# 发送下载请求
response = requests.get(url=url, headers=headers).content
# 将响应内容写入文件
with open(name+'.mp3', 'wb') as f:
    f.write(response)
# 打印下载完成消息
print(name, '下载完成')
# 发送请求获取页面内容
response = requests.get(url=url, headers=headers).text
# 使用XPath解析页面
page_html = etree.HTML(response)
# 解析歌曲列表信息,并逐个提交下载任务到线程池
for i in json.loads(id_list):
    name = i['name']
    id = i['id']
    author = i['artists'][0]['name']
    pool.submit(download, id, name+'-'+author)

 #最后关闭线程池

pool.shutdown()

好了,核心部分已经解决了,接下来稍微完善一下代码结构,就得到了完整的代码:

from lxml import etree
import requests
import json
from concurrent.futures import ThreadPoolExecutor

# 创建线程池
pool = ThreadPoolExecutor(max_workers=10)
# 请求头信息
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"
}
def download(id, name):
    # 构造下载链接
    url = f'http://music.163.com/song/media/outer/url?id={id}'
    # 发送下载请求
    response = requests.get(url=url, headers=headers).content
    # 将响应内容写入文件
    with open(name+'.mp3', 'wb') as f:
        f.write(response)
    # 打印下载完成消息
    print(name, '下载完成')
def get_id(url):
    # 发送请求获取页面内容
    response = requests.get(url=url, headers=headers).text
    # 使用XPath解析页面
    page_html = etree.HTML(response)
    # 提取歌曲列表信息
    id_list = page_html.xpath('//textarea[@id="song-list-pre-data"]/text()')[0]
    # 解析歌曲列表信息,并逐个提交下载任务到线程池
    for i in json.loads(id_list):
        name = i['name']
        id = i['id']
        author = i['artists'][0]['name']
        pool.submit(download, id, name+'-'+author)
    # 关闭线程池
    pool.shutdown()
if __name__ == '__main__':
    # 用户输入歌曲关键词
    keyword = input("请输入歌曲名称:")
    # 构造搜索URL
    search_url = f'https://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s={keyword}&type=1&offset=0&total=true&limit=5'
    # 发送搜索请求并获取响应内容
    response = requests.get(url=search_url, headers=headers).json()
    # 提取歌曲列表
    song_list = response['result']['songs']
    # 遍历歌曲列表,逐个提交下载任务到线程池
    for song in song_list:
        name = song['name']
        id = song['id']
        author = song['artists'][0]['name']
        pool.submit(download, id, name+'-'+author)
    # 关闭线程池
    pool.shutdown()

来看效果,输入想要搜索的歌曲,然后自动进行下载。

python网易云音乐爬虫原理,Python,python,网络爬虫

 好啦,以上就是全部的内容了,如果有帮到你的话,点个赞吧!文章来源地址https://www.toymoban.com/news/detail-770320.html

到了这里,关于利用python获取网易云音乐的歌曲,原理+代码!简单易懂的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用

    因为现在众多音乐平台下载歌曲都要收费了,导致我没有车载音乐听了。于是便自学爬虫做了这个简易的音乐爬虫。不是那些大平台的音乐爬虫,是一个不知名的小音乐网站的爬虫。下面开始正题: 首先,便是找不是那几家大互联网公司的音乐网站,在我的不懈努力之下终于

    2024年02月03日
    浏览(29)
  • 网易云音乐小程序案例分享 附完整代码

    todo: 添加音乐到收藏(最近)列表 歌词滚动

    2023年04月24日
    浏览(28)
  • Python爬虫网易云音乐,Tkinter制作音乐播放器

    目录 一、效果展示 二、环境 三、实现过程 四、源码 页面的美化以及功能还有待升级~ 先来说一下已有功能吧: 可以在搜索框中通过歌曲或歌手名称进行搜索,效果和在网易云官网搜索一样。 点击开始下载,就会将搜索结果的第一条歌曲下载到指定文件夹 下载完毕后,会遍

    2024年02月04日
    浏览(39)
  • Python爬虫 - 网易云音乐下载

    爬取网易云音乐实战,仅供学习,不可商用,出现问题,概不负责! 分为爬取网易云歌单和排行榜单两部分。 因为网页中,只能显示出歌单的前20首歌曲,所以仅支持下载前20首歌曲(非VIP音乐) 具体过程: 1.通过抓包,获取到请求头 2.发送请求,获取到网页源代码,通过

    2024年01月19日
    浏览(35)
  • Python爬虫实战-批量爬取下载网易云音乐

    大家好,我是python222小锋老师。前段时间卷了一套  Python3零基础7天入门实战 https://blog.csdn.net/caoli201314/article/details/132882813 1小时掌握Python操作Mysql数据库之pymysql模块技术 https://blog.csdn.net/caoli201314/article/details/133199207 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、se

    2024年02月05日
    浏览(56)
  • Python爬虫实战之爬取web网易云音乐——解析

    首先我们要进入网易云的web页面在页面中我们随意选择一首歌曲,打开开发者工具查看响应的界面。 在这些页面中我们需要查找存储有音乐文件的url,这是我们可以打开全局搜索直接搜索与音频文件后缀相关的文件。(当然这这里可能会白忙活) 因为我们打开媒体文件,看见的

    2024年02月13日
    浏览(30)
  • Python逆向爬虫入门教程: 网易云音乐加密参数 params & encSecKey 逆向解析

    网站链接: aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvZGlzY292ZXIvdG9wbGlzdD9pZD0zNzc4Njc4 正常流程抓包分析数据, 找到音频链接   找到歌曲信息对应数据包         分析加密参数位置     找到对应的加密位置, 其余就去扣代码即可, 缺什么补什么就行了, 主要是注意一下传入的参数问题, 因为它传入的

    2024年03月27日
    浏览(47)
  • 毕业设计:基于Python网易云音乐数据采集分析可视化系统+分析大屏 Flask框架 (附源码)建议收藏

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 随着互联网技术的发展,音乐成为了人们生活中不可或缺的一部分,而网易云音乐作为国内

    2024年02月01日
    浏览(36)
  • 爬取某音乐榜单歌曲

    一、打开网页https://music.163.com/,进入榜单(热歌榜) 二、右键检查、刷新网页,选择元素(点击歌曲名) 三、相关代码 四、爬取结果 GET请求(直链,hMusic高品质, mMusic中品质, lMusic低品质): GET请求(直链下载 含VIP):

    2024年02月07日
    浏览(24)
  • python3GUI--仿做一个网易云音乐(第三弹v2.0)By:PyQt5(附下载地址)

    传送门: python3GUI–仿做一个网易云音乐By:PyQt5(附下载地址) python3GUI–仿做一个网易云音乐(第二弹v1.5)By:PyQt5(附下载地址) 本篇为模仿网易云音乐2.0篇,是本系列最后一篇,本篇继续在v1.5基础上进行改进,尽最大努力模仿网易云音乐播放器UI,本篇将全方面介绍咱们的“

    2024年02月15日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包