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

使用R爬取Discogs:无法解析Hank Mobley专辑数据求助

解决Discogs API响应解析问题:提取Hank Mobley的专辑信息

我懂你现在的困扰——成功调用Discogs API拿到了200状态码的响应,却不知道怎么从返回的内容里抠出专辑标题和年份。咱们一步步来搞定这个问题:


1. 先解析JSON格式的响应

Discogs返回的是application/json格式的数据,你需要用jsonlite包把响应内容转换成R能识别的列表/数据框。先安装并加载这个包:

install.packages("jsonlite")
library(jsonlite)
library(magrittr)
library(httr)

2. 完整的请求与解析代码

把你的请求代码扩展一下,加入解析步骤,然后提取需要的字段:

# 发起请求
releasesHM <- httr::GET("https://api.discogs.com/artists/135872/releases")

# 解析JSON响应成可操作的列表
response_data <- releasesHM %>% content(as = "text") %>% fromJSON()

# 提取专辑标题和年份(从releases数组中筛选)
albums <- response_data$releases %>% 
  select(title, year) %>% 
  filter(year != "")  # 可选:过滤掉无年份的条目

3. 为什么之前看不到内容?

你之前拿到的releasesHM是httr的响应对象,不是直接的数据集。它包含了响应头、状态码和原始二进制内容,必须用content()函数提取文本内容,再转成JSON格式才能访问里面的具体字段。

4. 处理分页(可选)

Discogs API默认只返回10条结果,如果Hank Mobley的专辑不止10张,你可以通过response_data$pagination$urls$next拿到下一页的API地址,循环请求直到获取全部内容:

# 示例:简单的分页获取逻辑
all_albums <- data.frame()
current_url <- "https://api.discogs.com/artists/135872/releases"

while (!is.null(current_url)) {
  res <- GET(current_url)
  data <- res %>% content(as = "text") %>% fromJSON()
  page_albums <- data$releases %>% select(title, year)
  all_albums <- rbind(all_albums, page_albums)
  current_url <- data$pagination$urls$next
}

这样你就能得到清晰的专辑标题和年份列表啦,试试上面的代码应该就能解决问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:35:00