跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 结合代理 IP 自动化采集网易云音乐数据实战

Python 结合代理 IP 解决网络爬虫反爬限制,实现网易云音乐每日推荐数据的稳定抓取与 Excel 归档。涵盖环境搭建、代码逻辑解析及异常处理方案,适合有数据采集需求的开发者参考。

清酒独酌发布于 2026/3/23更新于 2026/10/2483 浏览
Python 结合代理 IP 自动化采集网易云音乐数据实战

Python 结合代理 IP 自动化采集网易云音乐数据实战

前言

最近想做个网易云音乐每日推荐歌单存档小工具,每天自动获取推荐歌曲并存成 Excel。刚跑几天代码就报网络异常,手动访问发现被平台限制了:刷新 10 次有 8 次跳验证,根本拿不到数据。

一开始试过免费代理池,要么失效快,要么速度慢,同步成功率不到 30%;后来手动换手机热点,每天要切换好几次,还得盯着程序有没有断,完全背离了自动化的初衷。直到尝试使用住宅级代理 IP,模拟正常用户访问,才真正解决了这个问题。

全面认识

为什么选择代理 IP?

做数据采集时,代理 IP 主要解决三个核心问题:

  • 地域覆盖:很多榜单只有中美欧资源,小语种地区完全没资源。好的代理能覆盖 220+ 国家/地区,响应速度比之前快了近 2 倍。
  • 自动轮转:手动切换太费时间,支持失效自动切换——设置响应延迟超 1 秒就换,稳定性大幅提升。
  • 场景适配:针对特定业务场景(如音乐平台)选择对应池子,反爬拦截率会明显下降。

实际使用感受

稳定运行两周后,有几个点特别实用:

  1. 资源丰富且稳定:覆盖全球多个地区的动态与静态资源,数据传输速度稳定,较少出现延迟或连接中断。
  2. 隐私保护:住宅级真实 IP,抓包看请求头和正常浏览器访问没区别,安全性高。
  3. 服务响应:遇到配置问题时,技术支持能提供针对性建议,甚至根据具体场景提供定制方案。
  4. 新手友好:支持 Windows/Linux/Mac 全系统,计费灵活,按流量算,适合个人项目测试。

手把手教你:从 0 到 1 的完整流程

很多新手怕「代理配置太复杂」,其实跟着步骤走很快就能搞定。

第一步:注册与认证

打开代理服务商官网,用手机号完成注册。登录账号后进入用户中心,建议完成身份验证,这样可以解锁更高的并发请求管理等高级功能。

第二步:选择套餐

在后台的'套餐购买'板块,能看到动态住宅、静态住宅等多种类型的服务。如果有明确需求直接选择对应套餐;如果不确定用量,可以先充值后按需消费。找不到匹配套餐时,也可以联系客服咨询专属定制服务。

第三步:获取并配置代理

认证通过后,在'获取代理'中选择'API 获取',根据需求设置 IP 数量、国家、城市等参数,生成链接。

这里需要注意,要把使用设备的公网 IP 添加到白名单才能正常使用。提前查好自己的设备公网 IP(百度搜「我的 IP」就行),别填局域网 IP(比如 192.168.x.x),不然会出现不可用情况。

复制生成的链接后,在浏览器中请求,就能获取到可用的资源和对应端口,接下来就可以根据自己的需求进行应用了。

实战体验

为了测试产品的实际使用效果,我尝试用它配合 Python 进行数据采集,目标是提取网易云音乐的每日推荐歌曲信息,并保存到 Excel 中。

我把完整的采集代码整理好了,加了详细注释,还补充了之前踩过的坑,新手直接改参数就能用。

1. 导入必要的库

import requests  # 用于发送 HTTP 请求获取数据
import json      # 用于解析返回的 JSON 格式数据
from openpyxl import Workbook  # 用于创建和操作 Excel 文件
from datetime import datetime  # 用于生成时间戳
import time      # 用于处理时间相关操作
import os        # 用于操作系统路径,确保文件保存到桌面

2. 通过 API 链接获取资源

定义一个主函数来获取代理资源,对返回结果进行多重验证,确保获取的有效。

def get_netease_recommendations_with_proxy():
    proxy_api_url = "此处填写代理 API 地址"
    print("正在获取...")
    try:
        response = requests.get(proxy_api_url, timeout=10)
        if response.status_code == 200:
            ip_list = response.text.strip().split('\n')
            if ip_list and ip_list[0].strip():
                proxy_ip = ip_list[0].strip()
                print(f"成功获取:{proxy_ip}")
            else:
                print("返回的列表为空")
                return None
        else:
            print(f"获取失败,状态码:{response.status_code}")
            return None
    except Exception as e:
        print(f"连接代理 API 失败:{e}")
        return None

3. 配置代理参数和请求头

设置代理和音乐 API 配置,注意 Cookie 需要替换为有效的登录凭证。

# 设置代理
proxies = {
    'http': f'http://{proxy_ip}',
    'https': f'http://{proxy_ip}'
}

# 音乐 API 配置
netease_url = 'https://music.163.com/api/v3/discovery/recommend/songs'

# Cookie 配置
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Referer': 'https://music.163.com/',
    'Origin': 'https://music.163.com',
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Cookie': '您的 Cookie 信息...'
}

4. Excel 文件初始化

在发送请求前,先创建 Excel 文件结构。

# 创建 Excel 工作簿
wb = Workbook()
ws = wb.active
ws.title = "网易云每日推荐歌曲"

# 添加表头
ws.append(['序号', '歌曲名称', '歌手', '专辑', '歌曲 ID', '时长', '播放链接'])

5. 发送请求与处理数据

发送请求并处理返回的数据,将歌曲信息写入 Excel。

try:
    response = requests.get(netease_url, headers=headers, proxies=proxies, timeout=15)
    print(f"响应状态码:{response.status_code}")
    
    if response.status_code == 200:
        data = response.json()
        print(f"某云返回代码:{data.get('code')}")
        
        if data.get('code') == 200:
            songs = data['data']['dailySongs']
            print(f"成功获取到 {len(songs)} 首每日推荐歌曲")
            
            for index, song in enumerate(songs, 1):
                song_name = song['name']
                artists = "、".join([artist['name'] for artist in song['ar']])
                album = song['al']['name']
                song_id = song['id']
                duration_ms = song['dt']
                duration = f"{duration_ms // 60000}:{str(duration_ms % 60000 // 1000).zfill(2)}"
                play_url = f"https://music.163.com/song?id={song_id}"
                
                # 控制台输出
                print(f"{index:2d}. {song_name} - {artists}")
                
                # 写入 Excel
                ws.append([index, song_name, artists, album, song_id, duration, play_url])
except Exception as e:
    print(f"发生错误:{e}")

6. 文件保存与异常处理

最后,将数据保存到桌面,并完善错误处理逻辑。

if os.name == 'nt':
    desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
else:
    desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")

if not os.path.exists(desktop_path):
    desktop_path = os.path.expanduser("~")

timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f'网易云每日推荐_{timestamp}.xlsx'
file_path = os.path.join(desktop_path, filename)

wb.save(file_path)
print(f"数据已保存到桌面:{file_path}")
print("完成数据获取!")
return True

7. 程序主入口

完整的程序还需要一个主入口来运行。

if __name__ == "__main__":
    print("=" * 60)
    print("网易云音乐每日推荐歌曲提取")
    print("=" * 60)
    success = get_netease_recommendations_with_proxy()
    if success:
        print("\n任务完成!请查看桌面上的 Excel 文件")
    else:
        print("\n任务失败,请检查网络或服务状态")

超多场景预设,助力解决难题

本次实战的音乐采集,凭借稳定、保护使用者的隐私和覆盖广的特点,帮助我成功实现项目。后来发现,它的用途比我想象的广,以下场景业务应该也可以帮助到您:

  1. 数据驱动决策与市场研究:可助力高效采集公开数据,包括网页数据采集、市场调查、行业信息跟进等,为企业战略决策提供精准的数据支撑。
  2. 电子商务竞争与数字化营销:在电商领域,它能保护隐私并监控平台价格、排名;营销方面,通过本地化广告验证和 SEO 优化,助力企业提升营销效果与市场竞争力。
  3. 品牌保护与舆情风险管理:支持全天候监控,可有效发现侵权内容、监测舆情动态,帮助企业及时维护品牌形象与价值。
  4. 技术运维与安全验证:借助网络资源,它能协助测试网站在不同地域的性能稳定性。

用后感受

总结一下它的适配人群和注意点:

  • 适合的人:有合法数据采集需求(如个人项目、企业调研)、需要稳定 IP、不想花时间折腾代理的人 —— 尤其新手,不用懂底层原理,按步骤配置就能用。
  • 避坑提醒:一定要遵守平台规则!不可做非法采集。

如果大家也遇到 IP 被限制、采集不稳定等问题,又不想在厂商上浪费太多时间,不妨试试 —— 但记住,工具只是辅助,合法合规的采集习惯才是最重要的。

目录

  1. Python 结合代理 IP 自动化采集网易云音乐数据实战
  2. 前言
  3. 全面认识
  4. 为什么选择代理 IP?
  5. 实际使用感受
  6. 手把手教你:从 0 到 1 的完整流程
  7. 第一步:注册与认证
  8. 第二步:选择套餐
  9. 第三步:获取并配置代理
  10. 实战体验
  11. 1. 导入必要的库
  12. 2. 通过 API 链接获取资源
  13. 3. 配置代理参数和请求头
  14. 设置代理
  15. 音乐 API 配置
  16. Cookie 配置
  17. 4. Excel 文件初始化
  18. 创建 Excel 工作簿
  19. 添加表头
  20. 5. 发送请求与处理数据
  21. 6. 文件保存与异常处理
  22. 7. 程序主入口
  23. 超多场景预设,助力解决难题
  24. 用后感受

更多推荐文章

查看全部
  • 零基础学习 Python 指南:从入门到实战的路径规划
  • VSCode 创建 Python 项目及 PyCharm 项目迁移指南
  • Python+Matplotlib 大数据可视化高效解决方案
  • OpenClaw:开源自托管 AI Agent 框架技术解析
  • AI 与传统方法处理历史观看数据的效率对比
  • FPGA 时序约束入门:常用 SDC 模板与工程实战
  • Oracle 索引核心原理、类型详解与创建实战
  • OpenClaw 跨平台卸载指南:Windows、macOS、Linux 及包管理器清理
  • JTextArea 与 JTable 自动滚动至最后一行的实现
  • 基于 GLM-4.6V-Flash-WEB 构建生产级智能客服系统实战
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • SpringAI Agent 实战:利用 Skills 构建代码评审智能体
  • jQuery 从入门到实战:前端高效开发指南
  • Visual C++ Redistributable 运行库安装与 DLL 缺失修复指南
  • Stable Diffusion 3.5 本地部署与使用指南
  • 单链表实战:删除指定值、反转链表与查找中间节点
  • 本地化部署 AI 量化分析平台:Docker 配置与波浪理论实战
  • Python Django Flask Vue 公务员考试交流平台与复习系统
  • 本地部署 Apache Answer 问答平台及公网访问方案
  • Windows 7 系统 Git 安装与配置详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online