Python爬虫—手把手教你用Python爬取音乐,小白也能操作(源码可分享)

在开始之前,做一点小小的说明哈:

  • 本文需要有简单的python爬虫基础,主要用到两个爬虫模块(都是常规的)
    • requests模块
    • selenium模块
  • 建议使用谷歌浏览器,方便进行抓包和数据获取。

Python入门学习资料免费获取

Part1 进行网页分析

首先打开网易云的网页版网易云
然后搜索你喜欢的歌手,这里我就搜陈奕迅,右键选择检查
在这里插入图片描述

选择一首歌曲找到这个首歌曲的数字ID,并进行复制
在这里插入图片描述
在众多数据中准确的去找到这一串数字
在这里插入图片描述

在浏览器上粘贴接口并附上那一串ID,点击回车键
在这里插入图片描述

最后你就可以轻松的听完这首歌啦
在这里插入图片描述

现在我把那个url贴出来

https://m10.music.126.net/20200715163315/a075d787d191f6729a517527d6064f59/ymusic/0552/0f0e/530f/28d03e94478dcc3e0479de4b61d224e9.mp3

Part2 更高级的

看到这里,你可能会想,为啥根本没用selenium模块呢?能不能直接爬取任何一首我想要的歌,而不用每首都去费心费力的找一个url呢?当然可以哒!
其实网易云在线播放每首歌曲时,都有一个外链地址,这是不会变的,跟每首歌的唯一一个id绑定在一起,每首歌audio文件的url如下:

url = 'https://music.163.com/artist?id=3684'

id值的获取也很简单,播放列表,上方会出现对应的网址,那里有id值,如下图:
在这里插入图片描述

所以只需把上面程序中的url改成新的url即可
在这里插入图片描述

程序目标是下载当前页面中所有的歌曲。
通过接口下载: 接口链接 + 歌曲ID

  1. 导包
import os
import time
import requests
from lxml import etree

2.定义请求头

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

3.定义网易云歌单的网址(记得删除/#,否则请求到的不是真是的网 页)

url = 'https://music.163.com/artist?id=3684'

4.发起网络请求,获取网页中的数据

response = requests.get(url, headers=headers)

print(response.text)

5.将网页的html数据(字符串)转换为树形结构

html = etree.HTML(response.text)

6.筛选目标数据(歌曲ID和名称)

music_label_list = html.xpath('//a[contains(@href,"/song?")]')

print(music_label_list)

可以使用os库来新建文件夹

if not os.path.exists('music'):
    os.mkdir('music')

7.对标签列表进行循环遍历,得到单首歌曲的标签信息

for music_label in music_label_list:
    # 从单个的音乐标签中筛选出ID信息
    href = music_label.xpath('./@href')[0]
    # print('href数据:', href)

    # 从ID信息中切割出ID的数字值
    music_id = href.split('=')[1]
    # print('ID数据:', music_id)

    # 判断字符串中是否是数字(如果是数字结果才为真)
    if music_id.isdigit():
        # 这是正确的歌曲ID
        print('ID数据:', music_id)

        # 提取出歌曲的名字
        music_name = music_label.xpath('./text()')[0]
        print('歌曲名字:', music_name)

        # 定义请求歌曲的链接
        music_url = 'http://music.163.com/song/media/outer/url?id=' + music_id

        # 发送网络请求获取歌曲数据
        response = requests.get(music_url, headers=headers)

        # 将歌曲数据保存到mp3文件中
        with open(f'./music/{music_name}.mp3', 'wb') as file:
            file.write(response.content)

        print(f'《{music_name}》下载成功。。。。。。')

        # 下载一首歌后延时1秒
        time.sleep(1)

爬音乐完整代码已做打包
完整源码和资料
扫描下方二维码免领取源码还有案例↓ ↓ ↓
在这里插入图片描述


最后,如果你对Python感兴趣的话。可以试试我整理的这一份全套Python学习资料!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!

👉[[CSDN大礼包:《python安装工具&全套学习资料》免费分享]]安全链接,放心点击

👉Python学习大礼包👈
  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值