You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python批量下载API返回的自定义语音MP3文件

解决方案:程序化批量下载触发保存对话框的语音文件

这类URL的核心特点是响应头包含 Content-Disposition: attachment; filename="xxx.mp3",强制浏览器弹出保存框,但完全可以用Python的requests模块实现批量下载,问题大概率出在请求头设置或文件保存方式上。以下是直接可用的批量下载方案:

基础批量下载代码

假设你已经整理好待下载的URL列表,按顺序对应1.mp3到6.mp3:

import requests

# 替换为你的语音文件URL列表,顺序对应1.mp3、2.mp3...
url_list = [
    "https://your-api-url/voice-1",
    "https://your-api-url/voice-2",
    "https://your-api-url/voice-3",
    # 继续添加剩余URL
]

# 模拟浏览器请求头,避免服务器拦截非浏览器请求
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

for file_idx, url in enumerate(url_list, start=1):
    try:
        # 流式请求,避免大文件占用过多内存
        response = requests.get(url, headers=headers, stream=True)
        response.raise_for_status()  # 若请求失败(如403/404)直接抛出异常

        # 以二进制模式写入文件,命名为指定格式
        with open(f"{file_idx}.mp3", "wb") as audio_file:
            for chunk in response.iter_content(chunk_size=1024):
                if chunk:
                    audio_file.write(chunk)
        print(f"已完成:{file_idx}.mp3")
    except Exception as e:
        print(f"{file_idx}.mp3 下载失败:{str(e)}")

关键细节说明

  • 流式下载:stream=True 让请求分块获取内容,适合音频这类非文本文件,避免一次性加载大文件到内存。
  • 请求头模拟:添加User-Agent是绕过服务器基础反爬的常用手段,若仍被拦截,可补充Referer字段(比如API所在的网页地址)。
  • 异常处理:response.raise_for_status() 能快速定位请求失败原因,比如权限不足、URL失效等。

进阶:需要会话认证的情况

如果API需要登录后才能访问(比如携带Cookie),用requests.Session()保持会话即可:

session = requests.Session()
# 先完成登录操作(如果需要)
# session.post("https://your-api-url/login", data={"username": "xxx", "password": "xxx"})

for file_idx, url in enumerate(url_list, start=1):
    response = session.get(url, headers=headers, stream=True)
    # 后续保存步骤同上

排查技巧

如果下载失败,先做以下检查:

  1. 打印response.status_code,确认是否为200(成功);403可能是权限问题,404是URL无效。
  2. 打印response.headers,查看Content-Type是否为audio/mpeg类音频格式,确认URL指向正确资源。

内容的提问来源于stack exchange,提问作者Jitender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:18:29