前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >爬虫实例七:网易云音乐

爬虫实例七:网易云音乐

原创
作者头像
远方的星
修改于 2021-03-01 10:13:35
修改于 2021-03-01 10:13:35
4.3K119
代码可运行
举报
运行总次数:19
代码可运行

一、前言

本文爬取内容均为网易云提供免费下载的音乐。

二、下载链接分析

网易云在线播放每首歌曲时,都有一个外链地址,这是不会变的,跟每首歌的唯一一个id绑定在一起,而每首歌audio文件的URL如下:

代码语言:python
代码运行次数:14
运行
AI代码解释
复制
url = 'http://music.163.com/song/media/outer/url?id=' + 歌曲的id+ '.mp3'

那么id是什么呢?id应该怎么获取呢?

其实很简单,当你在网易云打开一个音乐时,就能很明显地发现:(本文以《小酒窝》为例)

Q:那怎么获取不同音乐的id呢?

A:换首歌即可呀。

Q:那获取每首歌的这个页面有什么规律可循嘛?

A:当然!

请看:

这是根据歌曲名搜索得到的页面,我们搜几首不同的歌,看看变化。

《小酒窝》

《用心良苦》

《Scarborough Fair》

通过这三个例子,我们就能提取出一个通用的URL模板:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
url='https://music.163.com/#/search/m/?s= ' + 歌曲的名字 + ' &type=1'

这样,我们就可以通过一个歌曲的名字获取到一个页面,在这个页面能获取歌曲的ID,然后通过ID和之前的一个URL模板组合起来,就能得到一个全新的URL。

以《小酒窝》为例,得到一个URL:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
http://music.163.com/song/media/outer/url?id=26305541.mp3

访问这个URL,出现这个页面,就是我们想要得到的外链

接着对这个页面进行分析

这里面的内容就是我们想要得到的,最终的下载链接!

三、完整代码

代码语言:python
代码运行次数:5
运行
AI代码解释
复制
import requests
import os
import bs4
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER'
}
# 创建保存音乐的文件夹
path = os.path.join('D:/网易云音乐')
if not os.path.exists(path):
    os.mkdir(path)
# 输入音乐名
name = input('请输入歌名:')
# 实现无可视化界面(固定写法)
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 初始化browser对象
browser = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options)


# 获取音乐的id、名字,歌手名
def get_id_name_singer(url):
    browser.get(url=url)
    browser.switch_to.frame('g_iframe')
    sleep(0.5)
    page_text = browser.execute_script("return document.documentElement.outerHTML")
    soup = bs4.BeautifulSoup(page_text, 'html.parser')
    music_ids = soup.select("div[class='td w0'] a")  # 音乐id
    music_id = music_ids[0].get("href")
    music_id = music_id.split('=')[-1]
    music_names = soup.select("div[class='td w0'] a b")  # 音乐名字
    music_name = music_names[0].get("title")
    music_singers = soup.select("div[class='td w1'] a")  # 歌手名
    music_singer = music_singers[0].string
    return music_id, music_name, music_singer


# 下载音乐
def download_music(url, song_name, singer):
    response = requests.get(url=url, headers=headers)
    music_data = response.content
    music_path_name = '{}_{}.mp3'.format(song_name, singer)
    music_path = path + music_path_name
    with open(music_path, 'wb') as f:
        f.write(music_data)
        print(music_path_name, '下载成功')


# 主函数
def main():
    url = 'https://music.163.com/#/search/m/?s=' + name + '&type=1'
    music_id, music_name, music_singer = get_id_name_singer(url)
    music_url = 'http://music.163.com/song/media/outer/url?id=' + music_id + '.mp3'
    download_music(music_url, music_name, music_singer)


if __name__ == '__main__':
    main()
    browser.quit()

四、声明

作者:远方的星

CSDN:https://blog.csdn.net/qq_44921056

腾讯云 : https://cloud.tencent.com/developer/column/91164

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
真棒 想认识下作者
真棒 想认识下作者
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【一起学Python】爬取网易云歌词
说在前面:这是公众号第一篇来自小伙伴的投稿。我之前挖过一个坑,说想抓取歌词以后做文本分析,后面不了了之了。刚好Ricky作为爬虫的初学者,需要小项目练手,他就把这件事接了过去,帮我填坑。作为初学者,做项目和做笔记是很重要的。Ricky把文章发给我后让我帮他改,我觉得其实每个人写文章风格不一样,有的人逗比,有的人严谨,只要能把事情讲清楚就好了。至于代码,只要能实现需求,我其实不在乎是Pythonic还是ugly。这也是一系列文章的第一篇,希望大家也能多多指点。 ▲ ▲ ▲ 接触python也有一段
不二小段
2018/04/08
1.4K0
【一起学Python】爬取网易云歌词
Python网易云音乐爬虫进阶篇
年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了~
Awesome_Tang
2018/09/11
2.8K0
Python网易云音乐爬虫进阶篇
编写一个网易云音乐爬虫程序
本次借助wxPython编写一个网易云音乐的爬虫程序,能够根据一个歌单链接下载其下的所有音乐
冰霜
2022/03/15
1.2K0
编写一个网易云音乐爬虫程序
Python爬虫实战:网易云音乐爬取
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
松鼠爱吃饼干
2020/11/19
4.3K0
Python爬虫实战:网易云音乐爬取
爬取网易云音乐热歌榜:从入门到实战
今日推荐:Spring AI再更新:如何借助全局参数实现智能数据库操作与个性化待办管理
LucianaiB
2024/11/21
1940
爬取网易云音乐热歌榜:从入门到实战
Python3爬虫抓取网易云音乐热评实战
前一段时间刚刚入门python爬虫,有大概半个月时间没有写python了,都快遗忘了。于是准备写个简单的爬虫练练手,我觉得网易云音乐最优特色的就是其精准的歌曲推荐和独具特色的用户评论,于是写了这个抓取
小小科
2018/05/02
1.7K0
Python3爬虫抓取网易云音乐热评实战
源码 | Python爬虫之网易云音乐下载
偶然的一次机会听到了房东的猫的《云烟成雨》,瞬间迷上了这慵懒的嗓音和学生气的歌词,然后一直去循环听她们的歌。然后还特意去刷了动漫《我是江小白》,好期待第二季…
昱良
2018/10/23
2.5K0
Hexo获取网易云音乐外链
Hexo获取网易云音乐外链 网易云音乐MP3外链真实地址获取方法,可用于各种背景音乐、直链播放… 一、进入网易云音乐官网 打开网易云音乐,找到喜欢的歌,复制网址的ID, 例如: image.png 地
零式的天空
2022/03/26
1.6K0
Hexo获取网易云音乐外链
Python爬虫爬取网易云音乐全部评论
beautiful now.png 思路整理 访问网易云音乐单曲播放界面,我们可以看到当我们翻页的时候网址是没有变化的,这时候我们大致可以确定评论是通过post形式加载的; .
Awesome_Tang
2018/09/11
1.5K0
Python爬虫爬取网易云音乐全部评论
网易云音乐直链
以下提供的方法简单、快捷并且直到现在依然可用。已经稳定几年了,网易云音乐外链用官方的就好。
NikoDos
2022/03/29
2.7K0
网易云音乐歌曲评论爬虫(附源码)
用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的全部评论,由于网易云音乐的评论都做了混淆加密处理,因此我们需要深入了解它的加密过程之后才能爬取到网易云音乐歌曲的全部评论.
Python中文社区
2018/10/25
2K0
网易云音乐歌曲评论爬虫(附源码)
Python数据可视化 | 网易云音乐年度歌曲
网易云音乐2018年度听歌报告—遇见你,真好。 相信有不少人在上周,应该已经看过自己网易云音乐的年度报告了。 小F也是去凑凑热闹,瞅了一波自己的年度听歌报告。 那么你在云村又听了多少首歌,听到最多的歌词又是什么呢? 2018年你的年度歌手又是谁,哪些又是你最爱的歌呢? 不过相比去年,我的票圈并没有很多发自己年度报告的朋友。 不得不说,版权之争开始,网易云音乐似乎就在走下坡路。 很多喜欢的歌听不了,这应该是大家共同的痛点。 最大的印象就是周董的歌,在愚人节时下架了,原以为只是个玩笑,不想却是真的。 本次通过
龙哥
2019/04/25
1.8K1
Python数据可视化 | 网易云音乐年度歌曲
免费下载网易云音乐内的音乐
分享艾索的单曲《晚安喵 (动画《罗小黑战记》插曲)》: http://music.163.com/song/28875230
KINDYEAR
2022/07/12
6.7K0
免费下载网易云音乐内的音乐
Python爬虫 | 如何获取网易云音乐评论
今天看了知乎上的一个问答,关于如何爬取网易云音乐的评论 关于如何爬网易云音乐的评论 我发现,第一位大佬写的方法,嗯,确实看不懂(虽然不妨碍白嫖),然后我自己试了试,params和encSecKey直接F12+ctrlC/V复制的😂 """ 不按照大佬写的加密方法,只能获取第一页的评论/(ㄒoㄒ)/~~ """ import requests from bs4 import BeautifulSoup import json import time def get_song_html(url):
Justlovesmile
2021/12/14
1.2K0
Python爬虫 | 如何获取网易云音乐评论
44万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
之前由于懒,总是评论区放个代码就草草了事,技术号们也不太好转载,以后争取《凹凸数读》的每篇文章都在这个《凹凸玩数据》里写下流程。
龙哥
2019/08/06
6190
爬取网易云音乐精彩评论
故事的小黄花 从出生那年就飘着 童年的荡秋千 随记忆一直晃到现在 Re So So Si Do Si La So La Si Si Si Si La Si La So 吹着前奏望着天空 我想起花瓣试着掉落 ……
猴哥yuri
2018/08/16
5260
用Python分析许嵩的歌
是否还记得断桥残雪,一听就是一下午 是否还记得认错,上课前必点歌曲 是否还记得素颜,同桌那清秀的脸庞
罗罗攀
2019/07/10
1K0
用Python分析许嵩的歌
利用python爬虫爬取网站音乐遇到的坑
最近我想在网站上下载几首音乐放到我的u盘里听,但是上网上一找,各大音乐网站下载歌曲(尤其是好听的歌曲)都需要vip。
子润先生
2021/06/17
1.2K0
一键解锁网易云音乐变灰歌曲
现在每天早上8点20给几十个网易账号打卡听歌300首(如果想给你的账号打卡升级发你的账号和md5加密后的密码给我),目前用的腾讯云的云函数免费服务,应该可以一直打卡下去。
苏生不惑
2020/08/18
5.5K0
一键解锁网易云音乐变灰歌曲
网易云音乐歌曲下载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
云雀叫了一整天
2019/09/29
1.7K0
相关推荐
【一起学Python】爬取网易云歌词
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验