Python爬取网易云音乐歌手歌曲和歌单


仅供学习参考

Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地
①找到要下载歌手歌曲的链接,这里用的是:
https://music.163.com/#/artist?id=10559
要提前建好保存文件夹:path1 = "D:/360下载/网易云音乐/1/"
然后更改你要保存的目录,目录要先建立好文件夹,例如我的是保存在D盘-360下载-网易云音乐-1文件夹内,就可以完成下载。如果文件夹没有提前建好,会报错[Errno 2] No such file or directory。

②找到要下载歌单的链接,这里用的是:
https://music.163.com/#/playlist?id=5175828159
要提前建好保存文件夹:path2 = "D:/360下载/网易云音乐/2/"
只能下载前面10首。
之后的歌曲信息服务器不给数据,无法拿到歌曲id。
我尝试使用网易云音乐PC端(可以加载歌单所有歌曲),用fiddler进行抓包,是POST请求,通过模拟请求,得到的response是乱码,尝试utf-8、gbk、gbk2312等解码也是乱码。应该客户端拿到数据是加密的,我没有找到其解密方式。只能使用模拟网页请求拿取歌单前面10首歌曲。
若有好的想法,可以一起探讨。
代码写于:2020.8.23

③要下载热歌榜所有歌曲,请查看我前一个发布内容

from urllib import request
from bs4 import BeautifulSoup
import re
import requests
import timeclass Music(object):def __init__(self, baseurl, path):head = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}baseurl = baseurl.replace("#/", "")self.baseurl = baseurlself.headers = headself.path = pathdef main(self):html = self.askurl()bs4 = self.analysis(html)id = self.matching(bs4)self.save(id)def askurl(self):req = request.Request(url=self.baseurl, headers=self.headers)response = request.urlopen(req)html = response.read().decode("utf-8")return htmldef analysis(self, html):soup = BeautifulSoup(html, "html.parser")bs4 = soup.find_all("li")bs4 = str(bs4)return bs4def matching(self, bs4):rule = re.compile(r'href="/song\?id=(\d*?)"', re.S)id = re.findall(rule, bs4)return iddef save(self, id):for i in id:url = "https://music.163.com/song?id=" + ireq = request.Request(url=url, headers=self.headers)response = request.urlopen(req)html = response.read().decode("utf-8")soup = BeautifulSoup(html, "html.parser")bs4 = soup.find_all("title")bs4 = str(bs4)rule = re.compile(r'<title>(.*?) - (.*?) - 单曲 - 网易云音乐</title>', re.S)name = re.findall(rule, bs4)name = name[0]singername = name[1].replace(r"/", "_")print("正在下载:" + name[0] + " - " + singername + "……")saveurl = "http://music.163.com/song/media/outer/url?id=" + icontent = requests.get(url=saveurl, headers=self.headers).contentwith open(self.path + name[0] + " - " + singername + ".mp3", "wb") as f:f.write(content)print(name[0] + " - " + singername + "-----------下载完毕。")time.sleep(1)returnif __name__ == "__main__":artisturl = "https://music.163.com/#/artist?id=10559"  # 下载歌手歌曲的urlpath1 = "D:/360下载/网易云音乐/1/"  # 保存路径1artist_demo = Music(artisturl, path1)artist_demo.main()playlisturl = "https://music.163.com/#/playlist?id=5175828159"  # 下载歌单的urlpath2 = "D:/360下载/网易云音乐/2/"  # 保存路径2playlist_demo = Music(playlisturl, path2)playlist_demo.main()print("\n全部歌曲下载完毕")

Python爬取网易云音乐歌手歌曲和歌单(爬虫)相关推荐

  1. Python爬取网易云音乐热歌榜(爬虫)

    Python爬取网易云音乐热歌榜歌曲,并下载到本地 找到要下载歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更 ...

  2. 利用selenium爬取网易云音乐歌手歌曲信息并分析

    1.网页分析 网址:https://music.163.com/#/search/m/?s=许嵩&type=1 观察网页,所有的歌曲信息都在class="srchsongst&quo ...

  3. python爬取网易云音乐百强榜单

    #引用第三方库,re,requests库 import requests #用来提取 import re #用来正则 #对网页进行提取,把里面的信息提取出来 def html(url):try:#看到 ...

  4. python爬取网易云音乐排行榜数据

    python爬取网易云音乐排行榜歌曲及评论 网易云音乐排行榜歌曲及评论爬取 主要注意问题:selenium 模拟登录.iframe标签定位.页面元素提取. 在利用selenium定位元素并取值的过程中 ...

  5. python爬虫No.1|爬取网易云音乐歌手的前50首歌曲ID及名字

    自学pythonのNo.5 引语 知识总结 Requests XPath 案例 曾经有这样的梗黑网易云音乐 实际上网易云是很不错的音乐软件之一.这个梗挺让我不舒服的,挫折谁都有,矫情没必要但对矫情之人 ...

  6. python爬取网易云音乐生成王力宏歌曲词云

    python爬取网易云音乐生成王力宏歌曲词云 # -*- coding:utf-8 -*- # 网易云音乐,通过歌手id生成词云 import requests import sys,re,os fr ...

  7. 用Python爬取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

  8. [爬虫]Python爬取网易云音乐搜索并下载歌曲!

    Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...

  9. Python爬取网易云音乐所有歌手的名称和链接

    一.需求 Python爬取网易云音乐所有歌手的名称和链接 二.代码实现 import requests from lxml import etree from urllib import reques ...

最新文章

  1. 基于异或,取反和循环移位实现一个简单的加密解密函数
  2. springboot+sockjs进行消息推送(广播模式)
  3. python3.7对应的numpy版本_图解NumPy包一文就够了
  4. 优质学习内容(自用)
  5. 拼接大屏数据展示_可视化大屏的UI设计是根据哪几个方面来进行?
  6. Linux上下载chronyd安装包,如何在Linux中安装和使用Chrony时间同步
  7. java 静态类实例_Java中多个类的静态实例?
  8. 哈哈哈,我来啦~~(纯灌水帖)
  9. 原来 Python 还有这些实用的功能和特点!
  10. 如何创建谷歌邮箱(Gmail)
  11. webrtc整体框架
  12. access查找楼号为01_2015年计算机二级考试Access每日一练(9月19日)
  13. Adaptable and Adaptive Hypermedia Systems
  14. QT修改releas发布的exe图标
  15. jsp酒店客房预订系统带前端
  16. 【大数据】Linkis是什么呢
  17. staged changes
  18. Check It Again: Progressive Visual Question Answering via Visual Entailment
  19. 开发者模式(一) 各种姿势进入
  20. 联想服务器x3250 m5文档,【联想x3250 M5参数】联想x3250 M5系列服务器参数-ZOL中关村在线...

热门文章

  1. adb+Frida+模拟器抓包的常用命令记录
  2. 局域网内建立共享硬盘服务器(基于windows共享硬盘,ubuntu可访问)
  3. 距离度量以及python实现(二)
  4. 前端开发Vue项目实战:电商后台管理系统(一)前后端搭建
  5. 2022年最新云南建筑八大员(劳务员)模拟题库及答案
  6. 半导体功率器件测试系统
  7. 【K8S】 基于Kubernetes部署Kafka集群
  8. GAN系列(三) —— CycleGAN无配对图像翻译
  9. 如何解决LTPS Mura不良
  10. 求函数f(x)=sinx的导数,证明(sinx)'=cosx,详细过程