在Google Sheets中使用Import XML获取Spotify艺术家粉丝数的问题
解决Google Sheets获取Spotify艺术家粉丝数的问题
因为Spotify官网是React构建的单页应用,初始HTML里不包含粉丝数这类动态加载的内容,IMPORTXML只能抓取页面的静态初始代码,所以直接用Xpath肯定拿不到数据。下面是两种靠谱的解决办法:
方法一:调用Spotify官方API(推荐)
这是最稳定可靠的方式,步骤如下:
获取Spotify API凭证
- 登录Spotify开发者平台,创建一个新应用,拿到
Client ID和Client Secret。
- 登录Spotify开发者平台,创建一个新应用,拿到
用Google Apps Script编写脚本
打开你的Google Sheet,点击「扩展程序」→「Apps脚本」,粘贴以下代码:// 获取Spotify API访问令牌 function getSpotifyToken() { const clientId = '你的Client ID'; const clientSecret = '你的Client Secret'; const auth = Utilities.base64Encode(`${clientId}:${clientSecret}`); const options = { method: 'POST', headers: { 'Authorization': `Basic ${auth}`, 'Content-Type': 'application/x-www-form-urlencoded' }, payload: 'grant_type=client_credentials' }; const response = UrlFetchApp.fetch('https://accounts.spotify.com/api/token', options); const data = JSON.parse(response.getContentText()); return data.access_token; } // 获取指定艺术家的粉丝数 function getSpotifyFollowers(artistId) { const token = getSpotifyToken(); const url = `https://api.spotify.com/v1/artists/${artistId}`; const options = { headers: { 'Authorization': `Bearer ${token}` } }; const response = UrlFetchApp.fetch(url, options); const data = JSON.parse(response.getContentText()); return data.followers.total; }把代码里的
你的Client ID和你的Client Secret替换成你自己的凭证。在Sheet中调用函数
比如要获取示例链接里的艺术家粉丝数,直接在单元格里输入:=getSpotifyFollowers("1Xyo4u8uXC1ZmMpatF05PJ")回车后就能得到粉丝数量。
方法二:使用自定义IMPORTJSON函数(需配合API)
如果不想写Apps Script,可以安装IMPORTJSON自定义函数来解析API返回的JSON,但因为Spotify API需要授权请求头,IMPORTJSON默认无法添加请求头,所以还是推荐方法一的Apps Script方案,它能自动处理令牌的获取与刷新。
为什么IMPORTXML没用?
Spotify的页面内容是通过React动态渲染的,初始加载的HTML里只有空的容器标签,粉丝数等数据是页面加载完成后通过JS请求API获取并渲染的。IMPORTXML只能抓取初始的静态HTML,自然找不到这些动态生成的内容,所以之前的Xpath会失效。
内容的提问来源于stack exchange,提问作者devR
相关产品推荐
相关产品推荐

