如何通过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
相关产品推荐
相关产品推荐

