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

SoundCloud API v2爬取用户歌单时limit参数返回结果异常问题求助

SoundCloud API v2 歌单拉取异常问题解答

异常原因

  • limit参数存在未公开的隐性校验规则:SoundCloud v2 API没有对外公布完整参数规范,实际测试中limit的有效取值区间为1~50,超出该范围的取值会触发接口校验逻辑,要么被自动重置为默认值,要么直接返回空集合,这就是你设置limit=12返回0条、limit=100仅返回2条的核心原因。
  • 未处理分页逻辑:该接口默认采用分页返回机制,单次请求只会返回当前分页的资源,响应JSON中的next_href字段为下一页数据的请求地址,只有next_href为null时才代表拉取完全部资源,你只提取了第一页的collection字段,自然只能拿到部分歌单。
  • 缺少特殊参数:部分公开歌单会因为地域限制、版权过滤、账号设置等原因,默认不在响应中返回,需要额外补充show_hidden=1参数才能拉取到全量公开资源。
  • 反爬拦截:如果请求没有带正常的User-Agent头,接口会触发反爬策略,返回异常数据。

修复方案

调整请求参数,增加分页处理逻辑,修正后的代码如下:

library(httr)
library(jsonlite)

CLIENT_ID <- "替换为你自己的有效CLIENT_ID"
target_user_id <- 12
all_playlists <- list()
current_request_url <- paste0(
  "https://api-v2.soundcloud.com/users/", 
  target_user_id, 
  "/playlists?client_id=", CLIENT_ID, 
  "&limit=20&show_hidden=1"
)

while (!is.null(current_request_url)) {
  # 携带正常浏览器UA头,避免被反爬拦截
  resp <- GET(
    current_request_url, 
    add_headers(`User-Agent` = "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36")
  )
  # 请求失败最多重试3次,避免死循环
  retry_times <- 0
  while (resp$status_code != 200 && retry_times < 3) {
    Sys.sleep(1)
    resp <- GET(
      current_request_url, 
      add_headers(`User-Agent` = "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36")
    )
    retry_times <- retry_times + 1
  }
  if (resp$status_code != 200) break
  
  resp_data <- fromJSON(content(resp, "text", encoding = "UTF-8"))
  all_playlists <- c(all_playlists, resp_data$collection)
  # 更新下一页请求地址
  current_request_url <- resp_data$next_href
}

# 输出全量歌单数量
cat("共拉取到歌单数量:", length(all_playlists), "\n")

注意事项

  • 每次请求之间建议增加1秒左右的延迟,避免请求过于频繁被IP限流
  • 如果拉取到的歌单数量仍然不符,优先检查CLIENT_ID是否有效,过期的CLIENT_ID会导致接口仅返回部分公开资源
  • SoundCloud v2 API属于未公开接口,接口规则可能随时调整,如出现异常可以尝试更新CLIENT_ID和User-Agent取值

内容的提问来源于stack exchange,提问作者La Minh Hieu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:03