如何通过代码自动下载Spotify全球榜单的CSV文件?
解决Spotify每日全球榜单CSV自动下载问题
单日CSV下载方案
Spotify的每日榜单CSV有公开的API接口,不需要通过网页抓取按钮,直接构造请求URL即可获取数据。
核心思路
榜单CSV的URL格式为:
https://charts.spotify.com/api/charts/regional/global/daily/{YYYY-MM-DD}
将{YYYY-MM-DD}替换为目标日期(比如2024-05-20),直接请求该URL就能得到完整的CSV内容。
Python代码实现
import requests # 目标日期,格式必须为YYYY-MM-DD target_date = "2024-05-20" api_url = f"https://charts.spotify.com/api/charts/regional/global/daily/{target_date}" # 发送请求并保存CSV try: response = requests.get(api_url) response.raise_for_status() # 捕获HTTP请求错误 # 保存文件 file_name = f"spotify_global_daily_{target_date}.csv" with open(file_name, "w", encoding="utf-8") as f: f.write(response.text) print(f"单日榜单CSV已保存为: {file_name}") except Exception as e: print(f"下载失败: {str(e)}")
批量下载2017年1月至今的榜单
基于上述API,可以通过生成日期范围循环请求,实现批量下载。
Python代码实现
import requests import os from datetime import datetime, timedelta import time # 配置参数 start_date = datetime(2017, 1, 1) end_date = datetime.now() # 下载到当前日期,可自行修改 save_dir = "spotify_global_charts" request_interval = 1 # 每次请求间隔1秒,避免触发反爬 # 创建保存目录 os.makedirs(save_dir, exist_ok=True) current_date = start_date while current_date <= end_date: date_str = current_date.strftime("%Y-%m-%d") api_url = f"https://charts.spotify.com/api/charts/regional/global/daily/{date_str}" try: response = requests.get(api_url) response.raise_for_status() # 保存文件到指定目录 file_path = os.path.join(save_dir, f"spotify_global_daily_{date_str}.csv") with open(file_path, "w", encoding="utf-8") as f: f.write(response.text) print(f"✅ 成功下载: {date_str}") except requests.exceptions.HTTPError as e: print(f"❌ 下载失败 {date_str}: {e}") except Exception as e: print(f"❌ 处理异常 {date_str}: {str(e)}") # 日期递增1天 current_date += timedelta(days=1) time.sleep(request_interval)
注意事项
- 保持请求间隔,避免短时间内大量请求导致IP被限制
- 部分早期日期可能无数据,代码中的异常处理会自动跳过并提示
- 确保安装了
requests库,可通过pip install requests安装
内容的提问来源于stack exchange,提问作者txtRandy
相关产品推荐
相关产品推荐

