python 爬虫下载网易歌单歌曲

可以根据歌单 id 来下载歌单中的所有音乐,付费音乐除外

可以自己输入歌单 id 来进行单个歌单下载,也可以结合上一篇文章

爬取网易云音乐所有歌单信息

先取到所有的歌单信息,在进行所有歌单中的歌曲下载

爬取思路

  • 判断是否输入歌单 id
  • 输入了 id
    • 拼接请求的歌单 url
    • 发送请求,取到当前歌单中的所有歌曲的信息
    • 遍历每个歌曲信息
    • 拼接下载歌曲的 url,http://music.163.com/song/media/outer/url?id=歌曲id
    • 这个一个大佬的找到的网易接口,将歌曲 id 拼接即可请求到下载地址
    • 发起请求,下载歌曲
  • 未输入 id
    • 根据上段代码 爬取网易云音乐所有歌单信息,执行完会将歌单信息保存到 TXT 文件中
    • 从文件中读取分割出所有的歌单 url
    • 遍历歌单 url,取到每个歌单中的所有歌曲的信息
    • 遍历,拼接 url
    • 发起请求,下载歌曲

爬虫自动创建文件夹

当代码执行时发现没有文件夹会报错,可以加上判断,没有文件夹,会自动创建

folder_path = "D:\develop\code\spider_code\其他\music"  # 要保存到的路径,自己修改if not os.path.exists(folder_path):  # 判断有没有当前路径os.makedirs(folder_path)  # 没有就进行创建

代码

import osimport requests
from selenium import webdriverclass DwMusic:def __init__(self, playlist_id):# 下载链接前缀self.url_temp = "http://music.163.com/song/media/outer/url?id="self.playlist_id = playlist_id if playlist_id else Noneself.playlist_url = "https://music.163.com/playlist?id={}".format(self.playlist_id if playlist_id else None)self.driver = webdriver.Chrome()self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3608.4 Safari/537.36"}def parse_get_url(self, url):resp = requests.get(url, headers=self.headers)return resp.contentdef get_palylist_url(self):playlist_url = []with open('music_163.txt', 'r', encoding="utf-8") as f:playlist_list = f.readlines()for playlist in playlist_list:if playlist != "\n":playlist_url.append(playlist[-45:-1])print(playlist_url)return playlist_urldef get_song_url(self):tr_list = self.driver.find_elements_by_xpath("//table[@class='m-table ']/tbody/tr")song_list = []for tr in tr_list:items = {}items["song_url"] = self.url_temp + tr.find_element_by_xpath(".//a").get_attribute("href")[30:]items["song_name"] = tr.find_element_by_xpath(".//b").get_attribute("title")print(items)song_list.append(items)return song_listdef download_song(self, song_list):for song_info in song_list:# 发起请求try:resp = self.parse_get_url(song_info["song_url"])print("正在下载:{}".format(song_info["song_name"]))folder_path = "D:\develop\code\spider_code\其他\music"if not os.path.exists(folder_path):os.makedirs(folder_path)with open("music/{}.mp3".format(song_info["song_name"]), 'wb+') as f:f.write(resp)print("***** {} 下载成功 *****".format(song_info["song_name"]))except Exception as e:print(e)print("{}下载失败".format(song_info["song_name"]))passdef run(self):if not self.playlist_id:# 从文件中取到歌单的 urlplaylist_url = self.get_palylist_url()# 取到每个歌曲的 url# 发送请求for playlist in playlist_url:self.driver.get(playlist)# 进入到 iframe 框架中self.driver.switch_to.frame('g_iframe')# 取到歌曲 id,生成下载歌曲 urlsong_list = self.get_song_url()# 下载歌曲self.download_song(song_list)else:self.driver.get(self.playlist_url)# 进入到 iframe 框架中self.driver.switch_to.frame('g_iframe')# 取到歌曲 id,生成下载歌曲 urlsong_list = self.get_song_url()# 下载歌曲self.download_song(song_list)self.driver.quit()if __name__ == '__main__':playlist = input("请输入歌单id: ")dwmusic = DwMusic(playlist)dwmusic.run()

python 爬虫下载网易歌单歌曲相关推荐

  1. python代码示例下载-Python下载网易云歌单歌曲的示例代码

    今天写了个下载脚本,记录一下 效果: 直接上代码: # 网易云 根据歌单链接下载MP3歌曲 import requests from bs4 import BeautifulSoup def main ...

  2. Python下载网易云歌单歌曲,这个脚本你给多少分!

    今天写了个下载脚本,记录一下 效果: 直接上代码: # 网易云 根据歌单链接下载MP3歌曲 import requests from bs4 import BeautifulSoupdef main( ...

  3. Python下载网易云歌单歌曲

    今天写了个下载脚本,记录一下 效果: 直接上代码: # 网易云 根据歌单链接下载MP3歌曲 import requests from bs4 import BeautifulSoupdef main( ...

  4. python网易云_[Python] 网易云歌单/歌曲下载

    界面化 可以根据歌单 / 歌曲ID 下载 歌单/歌曲. eg: 歌单ID: https://music.163.com/#/playlist?id=3233380300 中的 3233380300 运 ...

  5. python爬虫_网易音乐歌单

    小白flag7 python爬虫_网易音乐歌单 准备 import os #存放文件处理 import time #程序运行时间计算 import sys #错误信息返回 预留 from seleni ...

  6. python爬取音乐歌曲大全_Python爬取网易云音乐歌单歌曲

    # 从网易云音乐下载歌单歌曲 # 参考了这些网址 # https://blog.csdn.net/Ciiiiiing/article/details/62434438 # https://github ...

  7. python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  8. python爬网易歌单_Python爬取网易云歌单

    1. 关键点 使用单线程爬取,未登录,爬取网易云歌单主要有三个关键点: url为https://music.163.com/discover/playlist/?order=hot&cat=% ...

  9. python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

最新文章

  1. 信号与系统 第一章 郭宝龙
  2. IE安全系列:脚本先锋(4)
  3. maven项目配置Jetty服务器
  4. 小工匠聊架构-写给研发工程师的全链路压测
  5. python 阿狸的进阶之路(4)
  6. java动态生成sdk_android、java制作sdk以及自动生成文档
  7. stl中copy()函数_std :: copy_if()函数以及C ++ STL中的示例
  8. Linux 打印简单日志(一)
  9. 04:求整数的和与均值
  10. Android Studio 3.1无法导入模块的解决办法
  11. android 面向对象 5,C++基础学习笔记(5)---面向对象(测试题)
  12. linux导出日志命令_Linux中的导出命令
  13. ThingsBoard 提示Too many updates!
  14. 简单的方法完成项目上传到github
  15. AJAX在IE下的调试
  16. POJ3658Matrix( 双重二分+负数+死循环)
  17. 【JZOJ A组】拯救奶牛
  18. python flask 微信_使用Flask创建微信公众号
  19. 阿里云ECS学习资源
  20. matlab 固有频率 振型,基于MATLAB语言多自由度振动系统固有频率及主振型计算分析.pdf...

热门文章

  1. google 文档翻译 html,快速将整篇中文文档翻译成全英文(史上最全总结)
  2. python导入openpyxl_python系列之(6)Python使用Openpyxl操作Excel
  3. table添加一行且可编辑 vue_Vue使用AntDesign 表格可添加 可编辑行 可选择
  4. php微信公众号消息推送
  5. java计算机毕业设计html5健身房信息管理系统源码+数据库+系统+lw文档
  6. PYTHON对接语音验证码接口案列
  7. Qlikview连接Mysql数据源
  8. 天空盒六面图片+左右眼3D全景图片
  9. Docker设置阿里云镜像加速器
  10. Halcon XLD 算子集合