python爬虫案例——5行代码爬取音乐资源

声明:本文章仅用于网络爬虫教学,请遵守Robots.txt爬虫协议,严禁用于非法途径。若读者因此作出任何危害网络(互联网)的行为,后果自负,与博主无关!

都2024年了,不会还有人在花钱用VIP下载音乐吧~

每天一个小妙招,教你5行代码轻松白嫖资源


小白须知

电脑需配备python解释器、安装一款编程软件,例如Visual Studio Code、pycharm等

Visual Studio Code官网:https://code.visualstudio.com/

pycharm社区版:https://www.jetbrains.com.cn/pycharm/

以下介绍以pycharm展开


案例:从酷狗爬取歌曲《天下》

一、获取音频URL地址

1、酷狗音乐搜索歌曲天下

入口:https://www.kugou.com/mixsong/4fql9xab.html?fromsearch=%E5%A4%A9%E4%B8%8B


2、检查网页,获取信息

进入该页面点击F12或鼠标右键进入网页检查页面,点击下方菜单栏中的network(网络),再点击media(音频),刷新页面,即出现目标音频资源,点击该音频即会出现音频URL地址。如下图

复制该音频URL地址,可在浏览器呈现

《天下》https://webfs.hw.kugou.com/202407121044/a9c6ce922ebb74e7c7ea6286efa11cd7/v2/17b11c65674378ca43995537331e1d9c/part/0/960119/G226/M08/12/13/clip_gocBAF8YSxaAZb1jADYY7e5XcDo154.mp3


二、进入pycharm,编写程序

1、创建项目,新建python文件 

2、导入爬取音频所需的请求资源包


或者使用终端命令行创建  pip instll requests


3、编写程序

# pip install requests
import requests

#音乐URL地址
music_url="https://webfs.hw.kugou.com/202407121044/a9c6ce922ebb74e7c7ea6286efa11cd7/v2/17b11c65674378ca43995537331e1d9c/part/0/960119/G226/M08/12/13/clip_gocBAF8YSxaAZb1jADYY7e5XcDo154.mp3"

#伪装成浏览器用户访问爬取
#请查看下方注意
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,         
    like Gecko) Chrome/109.0.0.0 Safari/537.36 SLBrowser/9.0.3.5211 SLBChan/105'
}

# 发送请求到服务器,获取音乐资源
m_resp = requests.get(music_url, headers=headers)

#服务器响应后返回数据进行保存
with open('music.mp3', 'wb') as f:
    f.write(m_resp.content)

注意:headers中的用户代理user-agent是浏览器所提供的,在上述讲的F12页面检查中,获取音频url最下面,复制粘贴过去即可。music.mp3为自定义的音频文件名。


4、运行当前文件

选中music.mp3,右键从本地资源管理器打开,即爬取音频成功


三、从本地资源管理器查看播放


四、关注博主,后期更新代码

目前此代码可爬取1分钟音频,后期将发布全新升级后不限时长的音频爬取代码

欢迎评论区跟博主讨论。

### 使用Python编写音乐相关爬虫案例 #### 发送请求并获取JSON数据 当涉及到从音乐网站抓取数据时,通常这些站点提供API接口返回结构化的JSON数据。下面是一个简单的例子展示如何使用`requests`库来发送HTTP GET请求,并接收包含歌曲信息的JSON响应。 ```python import requests def fetch_music_data(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } try: response = requests.get(url, headers=headers) if response.status_code == 200: return response.json() else: print(f"Failed to retrieve data: {response.status_code}") return None except Exception as e: print(e) return None ``` 此函数尝试访问指定URL以获取音乐数据,并设置了一个常见的浏览器代理头来模拟真实用户的访问为[^1]。 #### 解析和提取所需字段 一旦获得了服务器返回的JSON对象,就可以从中抽取特定的信息项,例如歌曲名称、艺术家名以及播放链接等。这里假设API返回的数据遵循一定的模式: ```python def parse_json(json_data): tracks = [] for item in json_data['tracks']: track_info = { "title": item["name"], "artist": item["artists"][0]["name"], "play_url": item["external_urls"]["spotify"] # 假设是Spotify URL } tracks.append(track_info) return tracks ``` 这段代码遍历了每一条音轨记录,并构建一个新的列表保存感兴趣的属性值。注意这里的路径可能因实际API而异,需根据具体情况进调整[^4]。 #### 将结果保存至CSV文件 最后一步就是把收集到的所有曲目信息导出成易于阅读的形式,比如CSV表格格式。这有助于进一步的数据处理或分享给他人查看。 ```python import csv def save_to_csv(tracks, filename='music_tracks.csv'): with open(filename, mode='w', newline='', encoding='utf-8') as file: writer = csv.writer(file) writer.writerow(["Title", "Artist", "Play_URL"]) for track in tracks: writer.writerow([track["title"], track["artist"], track["play_url"]]) if __name__ == "__main__": url = "https://api.example.com/v1/tracks" raw_data = fetch_music_data(url) parsed_tracks = parse_json(raw_data) save_to_csv(parsed_tracks) ``` 上述脚本展示了完整的流程:发起网络请求 -> 处理接收到的数据 -> 输出最终成果。当然,在实践中还需要考虑更多细节问题,如错误处理机制、反爬策略应对措施等等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小陈从不熬夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值