python网易云音乐文件爬取

Posted 泡泡儿夫斯基

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python网易云音乐文件爬取相关的知识,希望对你有一定的参考价值。

此程序只适用于歌单列表页面的音乐文件爬取,建议去网易云官网寻找要下载的音乐歌单,将歌单的url地址替换到mian()函数的url,然后下载,文件存放位置为py文件同级的oldMusic文件夹中
直接上代码

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time: 2020/1/29 11:31 
# @Author: lixing 
# @File: getWangYiYunMusic.py
# @desc: 爬取网易云上的音乐文件 原文链接:https://blog.csdn.net/t8116189520/article/details/80251473


import requests
from bs4 import BeautifulSoup
import urllib.request


# 爬取歌单中的所有音乐名字和下载链接地址
def getAllMusicList(play_url):
    headers = {
        'Referer': 'http://music.163.com/',
        'Host': 'music.163.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    }

    # 获取页面内容
    s = requests.session()
    response = s.get(play_url, headers=headers).content

    # 使用bs4匹配出对应的歌曲名称和地址
    s = BeautifulSoup(response, 'lxml')
    main = s.find('ul', {'class': 'f-hide'})

    lists = []
    for music in main.find_all('a'):
        print(music)
        list = []
        # print('{} : {}'.format(music.text, music['href']))
        musicUrl = 'http://music.163.com/song/media/outer/url' + music['href'][5:] + '.mp3'
        musicName = music.text
        # 单首歌曲的名字和地址放在list列表中
        list.append(musicName)
        list.append(musicUrl)
        # 全部歌曲信息放在lists列表中
        lists.append(list)
    print(lists)
    return lists

# 下载歌单lists中的所有音乐
def downloadMusicList(lists):
    # 下载列表中的全部歌曲,并以歌曲名命名下载后的文件,文件位置为当前文件夹
    for i in lists:
        url = i[1]
        name = i[0]
        try:
            print('正在下载', name)
            urllib.request.urlretrieve(url, './oldMusic/%s.mp3' % name)
            print('下载成功')
        except:
            print('下载失败')

def main():
    # 歌单url [注意:需要去除playlist前面的‘#/’]
    url = 'https://music.163.com/playlist?id=22341433'
    # 获取歌名,歌曲下载链接地址
    lists = getAllMusicList(url)
    downloadMusicList(lists)


if __name__ == "__main__":
    main()

以上是关于python网易云音乐文件爬取的主要内容,如果未能解决你的问题,请参考以下文章

如何用Python网络爬虫爬取网易云音乐歌词

如何用Python网络爬虫爬取网易云音乐歌曲

python实现网易云音乐批量下载

如何用Python网络爬虫爬取网易云音乐歌曲

python爬取网易云音乐歌单音乐

python爬取网易云音乐歌曲评论信息