跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Python算法

Python 结合住宅代理实现音乐数据自动化采集

综述由AI生成分享了利用 Python 结合住宅代理 IP 解决音乐平台数据反爬问题的实战经验。针对爬虫易被限制、免费代理不稳定等痛点,介绍了如何通过代理轮转和地域匹配提升采集成功率。文中提供了从环境配置、API 调用到数据清洗入库的完整代码示例,涵盖 requests 请求库、openpyxl 文件处理及异常捕获机制。重点强调了合规采集原则及敏感信息管理,适合需要进行数据抓取的技术人员参考。

监控大屏发布于 2026/3/21更新于 2026/4/252 浏览
Python 结合住宅代理实现音乐数据自动化采集

Python 结合住宅代理实现音乐数据自动化采集

前言

最近想做一个每日推荐歌单存档的小工具,每天自动获取推荐歌曲并保存为 Excel。但在初期测试中遇到了网络异常问题:手动访问发现被平台限制,刷新多次就会触发验证,导致无法获取数据。

起初尝试了免费代理池,但失效快且速度慢,同步成功率不足 30%;后来改用热点切换,每天需频繁操作,完全背离了自动化的初衷。最终通过引入住宅级代理 IP,模拟正常用户访问,才稳定解决了反爬拦截问题。

核心思路

选择代理方案时,主要关注以下三点:

  • 地域覆盖:普通代理多集中在中美欧,小语种地区资源匮乏。住宅代理通常覆盖 220+ 国家/地区,能匹配本地化需求,响应速度显著提升。
  • 自动轮转:支持失效自动切换,设置合理的延迟阈值即可减少人工干预,稳定性远高于静态 IP。
  • 场景适配:针对特定业务(如音乐流媒体)选择专用池,能有效降低反爬拦截率。

实战流程

1. 环境准备与认证

在配置前,确保已完成服务商的身份认证以解锁高级功能。登录后台后,建议先查询并记录本机公网 IP,将其加入白名单,避免后续连接被拒。

2. 获取代理资源

在控制台选择 API 获取模式,根据需求设置 IP 数量、国家等参数。复制生成的专属链接,注意不要使用局域网 IP(如 192.168.x.x),否则会导致连接失败。

3. Python 代码实现

以下是完整的采集脚本,整合了请求发送、数据解析及 Excel 写入逻辑。代码中已处理常见的网络异常,新手可直接修改参数运行。

import requests
import json
from openpyxl import Workbook
from datetime import datetime
import time
import os

def get_proxy_resource(api_url):
    """获取代理 IP 资源"""
    print("正在获取代理资源...")
    try:
        response = requests.get(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}")
                 proxy_ip
            :
                ()
                 
        :
            ()
             
     Exception  e:
        ()
         

 ():
    
    wb = Workbook()
    ws = wb.active
    ws.title = 
    
    
    ws.append([, , , , , , ])
    
     index, song  (songs, ):
        song_name = song[]
        artists = .join([artist[]  artist  song[]])
        album = song[][]
        song_id = song[]
        duration_ms = song[]
        duration = 
        play_url = 
        
        ws.append([index, song_name, artists, album, song_id, duration, play_url])
    
    
    desktop_path = os.path.join(os.path.expanduser(), )
      os.path.exists(desktop_path):
        desktop_path = os.path.expanduser()
    
    timestamp = datetime.now().strftime()
    file_path = os.path.join(desktop_path, )
    wb.save(file_path)
    ()

 ():
    api_url = 
    netease_url = 
    
    proxy_ip = get_proxy_resource(api_url)
      proxy_ip:
        ()
        

    proxies = {
        : ,
        : 
    }

    headers = {
        : ,
        : ,
        : ,
        : ,
        : ,
        : ,
        : 
    }

    :
        response = requests.get(netease_url, headers=headers, proxies=proxies, timeout=)
        ()
        
         response.status_code == :
            data = response.json()
             data.get() == :
                songs = data[][]
                ()
                save_to_excel(songs, )
            :
                ()
        :
            ()
     requests.exceptions.ProxyError  e:
        ()
     requests.exceptions.Timeout:
        ()
     requests.exceptions.ConnectionError  e:
        ()
     json.JSONDecodeError  e:
        ()
     Exception  e:
        ()

 __name__ == :
    ( * )
    ()
    ( * )
    main()
return
else
print
"返回的列表为空"
return
None
else
print
f"获取失败,状态码:{response.status_code}"
return
None
except
as
print
f"连接代理 API 失败:{e}"
return
None
def
save_to_excel
songs, filename
"""将数据写入 Excel"""
"每日推荐歌曲"
# 表头
'序号'
'歌曲名称'
'歌手'
'专辑'
'歌曲 ID'
'时长'
'播放链接'
for
in
enumerate
1
'name'
"、"
'name'
for
in
'ar'
'al'
'name'
'id'
'dt'
f"{duration_ms // 60000}:{str(duration_ms % 60000 // 1000).zfill(2)}"
f"https://music.163.com/song?id={song_id}"
# 保存路径
"~"
"Desktop"
if
not
"~"
"%Y%m%d_%H%M%S"
f"每日推荐_{timestamp}.xlsx"
print
f"数据已保存到:{file_path}"
def
main
"这里填写获取的 API 专属连接"
'https://music.163.com/api/v3/discovery/recommend/songs'
if
not
print
"无法获取代理,程序终止"
return
'http'
f'http://{proxy_ip}'
'https'
f'http://{proxy_ip}'
'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 信息...'
try
15
print
f"响应状态码:{response.status_code}"
if
200
if
'code'
200
'data'
'dailySongs'
print
f"成功获取到 {len(songs)} 首每日推荐歌曲"
"网易云每日推荐.xlsx"
else
print
f"API 返回错误代码:{data.get('code')}"
else
print
"请求未成功"
except
as
print
f"代理连接失败:{e}"
except
print
"请求超时"
except
as
print
f"连接错误:{e}"
except
as
print
f"JSON 解析错误:{e}"
except
as
print
f"未知错误:{e}"
if
"__main__"
print
"="
60
print
"音乐数据自动化采集"
print
"="
60

注意事项

  1. 合规性:数据采集务必遵守目标网站的服务条款,仅用于合法的学习或研究目的。
  2. Cookie 安全:生产环境中请勿硬编码 Cookie,建议使用环境变量管理敏感信息。
  3. 频率控制:即使有代理支持,也建议增加随机延时,避免高频请求触发风控。
  4. 异常处理:代码中已包含基础异常捕获,实际部署时可扩展日志记录功能以便排查问题。

总结

通过 Python 脚本配合稳定的住宅代理,可以有效绕过部分反爬机制,实现数据的自动化归档。对于需要跨地域访问或高并发采集的场景,选择合适的代理服务是关键。在实际操作中,保持对网络状态的监控和合理的重试机制,能进一步提升任务的稳定性。

目录

  1. Python 结合住宅代理实现音乐数据自动化采集
  2. 前言
  3. 核心思路
  4. 实战流程
  5. 1. 环境准备与认证
  6. 2. 获取代理资源
  7. 3. Python 代码实现
  8. 注意事项
  9. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 Ollama 与 Open WebUI 的本地大模型知识库搭建指南
  • AI 聊天记录导出指南:沉淀知识与高效复用
  • Trae Skills 模式实战:AI 自动分析并修复代码 Bug
  • C++ 模板编程基础:泛型编程入门与实践
  • FAIR plus 机器人全产业链接会:聚焦具身智能与产业链协同
  • Java 规则引擎核心原理与生产级落地实战
  • LM Studio 本地离线部署大语言模型实战指南
  • LobeChat 与 Stable Diffusion 联动实现 AI 绘画描述生成
  • 黑客真实生活揭秘:能否通过漏洞挖掘获得高额收入?
  • Llama-3.2-3B 本地部署实战:Ollama+Grafana 监控看板
  • LangChain 向量存储与检索器使用指南
  • 车载诊断协议 DoIP 系列:传输层控制协议 (TCP) 与用户数据报协议 (UDP)
  • nanobot 本地部署指南:支持 Web、CLI 与 QQ 多通道统一调度
  • 使用 frontend-design Skill 提升 AI 生成前端页面的设计感
  • OpenClaw 开源机器人项目实现空间智能体记忆与时间感知
  • 鸿蒙 Flutter 智能家居应用开发实战指南
  • llama.cpp 量化模型部署:从模型转换到 API 服务
  • 大模型应用开发技术指南:原理、API 与框架实践
  • Java 状态机详解:三种实现方式消除 if-else 嵌套
  • 文档解析技术在大模型训练与应用中的关键作用

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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