使用 Spotify API 进行网页抓取

Posted

技术标签:

【中文标题】使用 Spotify API 进行网页抓取【英文标题】:Web scraping with Spotify API 【发布时间】:2021-12-19 23:59:29 【问题描述】:

我尝试为每种流派获取 50 首歌曲,并将它们放在具有流派名称的数据框中,但出现以下错误。

Error : object 'res' not found

我知道未定义的对象导致了问题,但我不知道如何处理它。 你能解释一下吗?

**Language:R, Environment: Exploratory Public**

    genres <- RETRY('GET', url = 'https://api.spotify.com/v1/recommendations/available-genre-seeds', query = list(access_token = get_spotify_access_token(), limit=150), quiet = TRUE) %>% content()

  m <- do.call(rbind,lapply(genres$genre, function(x) if(is.null(x)) NA else c(x)))
  genres_df <- as.data.frame(m)

  colnames(genres_df) <- c("genre")

 get_genre_track <- function(genre) 
    track_check <- RETRY('GET', url = paste0("https://api.spotify.com/v1/search?query=genre%3A",genre),  query = list(type="track",limit = 50, offset = 0, access_token = get_spotify_access_token()), quiet = TRUE) %>% content()

    track_count <- 50

    df <- map_df(1:length(res$tracks$items), function(this_row) 
        tryCatch(
        this_track <- res$tracks$items[[this_row]]
        name <- this_track$name
        genre <- genre
        list(name = name, genre = genre)
      , error = function(e)
          NULL
      )
    )
  
  tracks_df <- lapply(genres_df$genre, get_genre_track) %>% bind_rows()
  tracks_df

(需要的库安装和用户信息省略)

【问题讨论】:

res$tracks$items 未在您的代码中定义。你期望这来自哪里?这应该从页面上刮下来吗?当您使用 Shift+Ctrl+C (Win) 检查页面并搜索“res”时,您看到什么了吗?你为什么选择这个对象名称 - 有没有你正在学习的教程? 成功了!非常感谢您的回答。 【参考方案1】:

在您上面链接的脚本中,res 定义如下:

res <- RETRY('GET', url = paste0("https://api.spotify.com/v1/search?query=genre%3A",genre), query = list(type="track",limit = 50, offset = numoffset, access_token = get_spotify_access_token()), quiet = TRUE) %>% content()

而在您的代码中,您似乎已将该变量重命名为 track_check

track_check <- RETRY('GET', url = paste0("https://api.spotify.com/v1/search?query=genre%3A",genre),  query = list(type="track",limit = 50, offset = 0, access_token = get_spotify_access_token()), quiet = TRUE) %>% content()

所以不要称它为res$tracks$items,而是track_check$tracks$items

【讨论】:

@Aman 成功了!非常感谢您的回答。 @Matchamin Great :) 记得接受将其标记为已关闭的答案。

以上是关于使用 Spotify API 进行网页抓取的主要内容,如果未能解决你的问题,请参考以下文章

网页抓取、屏幕抓取、数据挖掘技巧? [关闭]

如何用python 爬虫在社交媒体上抓取评论

从网站抓取数据的3种最佳方法

自动抓取页面生成接口的方法

请教网页里的特定数据怎么抓取?

使用PHP的cURL库进行网页抓取