我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Python3爬虫】网易云音乐歌单下载

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Python3爬虫】网易云音乐歌单下载

  下载网易云音乐热门歌单

 

  requests,multiprocessing,re。

 

  (1)页面分析:首先打开网易云音乐,选择热门歌单,可以看到以下歌单列表,然后打开开发者工具

   因此我们需要请求的url就是https://music.163.com/discover/playlist,然后用requests.get()方法请求页面,对于返回的结果,用正则表达式进行解析,得到歌单名字和歌单id,解析的正则表达式如下:

res = requests.get(url, headers=headers)
data = re.findall('<a title="(.*?)" href="/playlist\?id=(\d+)" class="msk"></a>', res.text)

  

  (2)得到歌单名字和歌单id后,构造歌单的url,然后模仿步骤(1)可以得到歌曲名字和歌曲id,解析的正则表达式如下:

re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res.text)

  再得到歌曲id后,构造歌曲的url,然后用requests.get().content方法下载歌曲,歌曲的url构造方法如下:

"http://music.163.com/song/media/outer/url?id=%s" %(歌曲id)

 

  (3)由于部分歌曲的名字并不能作为文件名保存下来,所以用到了try...except,对于不能保存为文件名的歌曲,我选择pass掉==

    

  (4)因为要下载多个歌单,一个歌单里又有很多歌曲,所以用到了multiprocessing模块的Pool方法,提高程序运行的效率。

 

  因为下载所有歌单会需要很长时间,所以我们先下载前三个歌单试试==

 1 import requests
 2 import re
 3 from multiprocessing import Pool
 4 
 5 headers = {
 6     'Referer': 'https://music.163.com/',
 7     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 "
 8                   "Safari/537.36"
 9 }
10 
11 
12 def get_page(url):
13     res = requests.get(url, headers=headers)
14     data = re.findall('<a title="(.*?)" href="/playlist\?id=(\d+)" class="msk"></a>', res.text)
15 
16     pool = Pool(processes=4)
17     pool.map(get_songs, data[:3])
18     print("下载完毕!")
19 
20 
21 def get_songs(data):
22     playlist_url = "https://music.163.com/playlist?id=%s" % data[1]
23     res = requests.get(playlist_url, headers=headers)
24     for i in re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res.text):
25         download_url = "http://music.163.com/song/media/outer/url?id=%s" % i[0]
26         try:
27             with open('music/' + i[1]+'.mp3', 'wb') as f:
28                 f.write(requests.get(download_url, headers=headers).content)
29         except FileNotFoundError:
30             pass
31         except OSError:
32             pass
33 
34 
35 if __name__ == '__main__':
36     hot_url = "https://music.163.com/discover/playlist/?order=hot"
37     get_page(hot_url)

 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Python3爬虫】网易云音乐歌单下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【Python3爬虫】网易云音乐歌单下载

下载网易云音乐热门歌单   requests,multiprocessing,re。   (1)页面分析:首先打开网易云音乐,选择热门歌单,可以看到以下歌单列表,然后打开开发者工具   因此我们需要请求的url就是https://music
2023-01-30

python3爬虫-下载网易云音乐,评论

# -*- coding: utf-8 -*-'''16位随机字符的字符串参数一获取歌曲下载地址 "{"ids":"[1361348080]","level":"standard","encodeType":"aac","csrf
2023-01-31

【Python3爬虫】下载酷狗音乐上的歌

经过测试,可以下载要付费下载的歌曲(n_n)  步骤:  打开酷狗音乐的官网,输入想要搜索的歌曲(例如《天后》),然后回车搜索,得到如下页面:     右键检查或者按F12打开开发者工具,点击JS选项,查找到如下信息,FileName就是返
2023-01-30

python爬虫+词云图,爬取网易云音乐

又到了清明时节,用python爬取了网易云音乐《清明雨上》的评论,统计词频和绘制词云图,记录过程中遇到一些问题爬取网易云音乐的评论一开始是按照常规思路,分析网页ajax的传参情况。看到参数都是加密过的,在网上参考别人之前爬虫的思路。发现陆续
2023-01-31

Python爬虫怎么全网搜索并下载音乐

本篇内容主要讲解“Python爬虫怎么全网搜索并下载音乐”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫怎么全网搜索并下载音乐”吧!现在写一篇博客总是喜欢先谈需求或者本内容的应用场
2023-06-15

Python爬取网易云音乐上评论火爆的歌曲

前言 网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论。但是,网易云音乐并没有提供热评排行榜和按评论排序的功能,没关系,本文就使用
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录