网易云爬虫-爬取单曲和歌单所有歌曲
今天断网了 敲代码不听歌的程序员是没有灵魂的,但是本地下载又太繁琐了,想着能不能一下把一个歌单的内容按文件夹进行下载,说做就做.
首先网上已经有了网易云js加载encSecKey和params参数的加密过程,分析也是稍微有些繁琐。这里我根据网易云的一个外链进行简单的下载
http://music.163.com/song/media/outer/url?id={}.mp3
每个根据都有不同的id 我们只需要将不同歌曲的id给填充下载,就可以请求数据,保存到本地 就是下载了。
下载网易云歌单同理:
每个歌单的id都是固定,前面的url都是一样的,我们用户只需要点开歌单 填充歌单id就能够得到这个歌单的页面数据,然后再对这个页面数据进行分析,拿到每一个歌曲的id 再根据第一步下载单曲的步骤就能将歌曲下载下来了。是不是很简单, 下载我将我写的源代码贴下,不足之处,请大家指教!
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time : 2020/4/24 15:05
# @Author : zh
# @File : wangyiyun.py
import json
import os
import re
from pprint import pprint
import requests
from selenium import webdriver
class WangYiYun():
def __init__(self):
self.song_mp3_url = 'http://music.163.com/song/media/outer/url?id={}.mp3'
self.song_list_id = 'https://music.163.com/#/playlist?id={}'
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
}
self.song_url = "https://music.163.com/#/search/m/?s={}&type=1"
self.songs = []
def show_menu(self):
print("欢迎来到网易云音乐下载中心")
print("-"*50)
print("1. 下载单曲")
print("2. 下载歌单")
print("3. 退出")
print("-"*50)
def run(self):
self