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

如何通过Python提取Spotify曲目的创作、制作等Credits信息?

提取Spotify曲目Credits信息的Python实现

可行方案:结合Spotipy与网页解析

Spotipy旧字段路径失效后,可通过「Spotipy获取曲目网页链接 + 网页解析提取Credits」的方式实现需求,以下是具体步骤和代码:

1. 安装依赖库

pip install spotipy requests beautifulsoup4

2. 代码实现

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import requests
from bs4 import BeautifulSoup

# 替换为你自己的Spotify开发者凭证
CLIENT_ID = "your_client_id"
CLIENT_SECRET = "your_client_secret"

# 初始化Spotipy客户端
client_credentials_manager = SpotifyClientCredentials(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

def get_track_credits(track_name, artist_name):
    # 搜索目标曲目
    search_result = sp.search(q=f"{track_name} {artist_name}", type="track", limit=1)
    tracks = search_result["tracks"]["items"]
    if not tracks:
        print("未找到对应曲目")
        return
    
    # 获取曲目Spotify网页链接
    track_url = tracks[0]["external_urls"]["spotify"]
    
    # 请求网页内容(模拟浏览器UA避免被拦截)
    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"
    }
    response = requests.get(track_url, headers=headers)
    soup = BeautifulSoup(response.text, "html.parser")
    
    # 定位并解析Credits板块
    credits_section = soup.find("div", {"data-testid": "credits-section"})
    if not credits_section:
        print("未找到Credits板块")
        return
    
    credits = {}
    for item in credits_section.find_all("div", class_="Type__TypeElement-sc-goli3j-0"):
        # 提取Credits标签(如Written by、Produced by)
        label = item.find("span", class_="Type__TypeElement-sc-goli3j-0 hjukrF").text.strip()
        # 提取对应人员名单
        names = [a.text.strip() for a in item.find_all("a", class_="Anchor-sc-112ty3y-0")]
        credits[label] = names
    
    return credits

# 示例:提取《Stormzy - Own It(Feat. Ed Sheeran & Burna Boy)》的Credits
credits = get_track_credits("Own It", "Stormzy")
if credits:
    for label, names in credits.items():
        print(f"{label}: {', '.join(names)}")

注意事项

  • 需先在Spotify开发者平台创建应用,获取CLIENT_ID和CLIENT_SECRET
  • Spotify网页的元素类名可能随页面更新变化,若代码失效需调整解析时的选择器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:15:35