欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

程序员文章站 2022-04-30 20:22:19
...

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
本文章纯野生,无任何借鉴他人文章及抄袭等。坚持原创!!

前言

你好。这里是Python爬虫从入门到放弃系列文章。我是SunriseCai。


本文章主要介绍利用爬虫程序调用API去 下载 网易云音乐的歌曲 。

1. 文章思路

看看网易云音乐网站,如下多图所示:

  • 首页(一级页面)
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐
  • 搜索页面(这里搜索 东方之珠
  • 然后点击第一首歌曲
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐
  • 播放页面(注意链接里边有一个id,划重点!!!)
  • 看到播放页面,捕捉到了多个m4a格式的数据包,不清楚m4a是什么没有关系,下面会介绍到它,这里先访问一波它的URL
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐
  • 访问m4aURL,来到下面的页面
  • 该页面 是东方之珠 该歌曲的播放页面,同时也是下载页面。
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

既然知道了是m4a数据包的URL可以下载歌曲,那接下来就是去分析URL了。

但是!!!这里咱们就不去分析URL,因为咱们这里定位的是入门,所以,简单就完事了。有更方便快捷的方法,是什么呢?请往下看。


  • 百度百科释义上面提到的m4a
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

2. 调用网易云音乐API

  • 看看其他歌曲的播放页面。
  • 这首Yellow也有对应的id
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

得知网易云音乐的歌曲都有着对应的id,很好,接下来看看如何利用这个id去下载对应的音乐。

这里网易云音乐API隆重登场。

http://music.163.com/song/media/outer/url?id=

API的使用很简单,只需要填入歌曲的id即可使用,先看示例:

  • 下图是在API里边填入歌曲id,然后用浏览器访问的样子。
    Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

代码示例:
Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐
执行代码后的样子:
Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

3. 代码部分

# -*- coding:utf-8 -*-
# author   : SunriseCai
# datetime : 2020/3/27 17:08
# software : PyCharm


"""网易云音乐下载程序"""


import requests


class DownloadMusic(object):
    def __init__(self):
        self.song_url = 'http://music.163.com/song/media/outer/url?id={}'
        self.headers = {
            'user-agent': 'Mozilla5.0'
        }

    def get_song_url(self, song_id):
        """
        传入歌曲id,拼凑完整URL,然后调用下载音乐函数
        :param song_id: 歌曲id
        :return: 
        """
        url = self.song_url.format(song_id)
        self.download_music(url)

    def download_music(self, song_url):
        """
        接受歌曲URL,执行下载函数
        :param song_url: 歌曲URL
        :return: 
        """
        resp = requests.get(url=song_url)
        with open('Yellow.mp3', 'wb') as f:
            f.write(resp.content)

    def main(self):
        """
        主函数
        :return: 
        """
        self.get_song_url('1413502053')


if __name__ == '__main__':
    spider = DownloadMusic()
    spider.main()

Github上大神的创建的音乐API项目 ,感兴趣的可以去了解。
Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

文章问题:

  • 本篇文章很水,因为是入门,所以真的很水。就是水字数水文章数量的。为了凑数量而写。
  • 建议各位通过复制黏贴代码去执行一番,有任何疑问请先自己动手解决,尽信书则不如无书
  • 实在解决不了可以一起交流。

待改进:


最后来总结一下本章的内容:

  1. 介绍了调用API去下载网易云音乐的爬虫思路
  2. 代码展示

Python爬虫从入门到放弃 09 | Python爬虫实战–下载网易云音乐

  • 感谢你的耐心观看,点关注,不迷路。
  • 为方便菜鸡互啄,欢迎加入QQ群组织:648696280

下一篇文章,名为 《Python爬虫从入门到放弃 10 | Python爬虫实战–下载bilibili在线列表视频》