使用 `genius` 包获取歌词时出现 `Not Found (HTTP 404)` 错误
`Not Found (HTTP 404)` error when using `genius` package to get lyrics
我创建了一个 dataset,其中包含披头士乐队的所有原创歌曲。我想使用 genius
包获取所有歌曲的歌词。我使用下面的代码获取歌词但是抛出一个错误。
map(beatles_songs$song, ~ genius_lyrics("The Beatles", ., "simple"))
Error in read_xml.response(x$response, ..., as_html = as_html) :
Not Found (HTTP 404).
In addition: Warning message:
In request_GET(session, url) : Not Found (HTTP 404).
我想这可能是因为列表中的歌曲名称与genius.com中的歌曲名称不匹配,但我不知道如何检查。那么我应该怎么做才能同时获取所有歌曲的歌词呢?
purrr
包有许多处理警告和错误的函数。我建议像下面这样的东西,灵感来自 this example:
genius_lyrics_s <- safely(genius::genius_lyrics)
beatles_songs <- tibble(song = c("Mr. Moonlight", "She Loves You", "Under my Thumb", "Octopus's Garden"))
map(beatles_songs$song, ~ genius_lyrics_s("The Beatles", ., "simple")) %>%
map("result") %>%
compact()
在您的情况下,获得歌曲结果的最佳方式是使用 add_genius()
。
beatles %>%
add_genius("The Beatles", song)
正是出于这个原因,genius 包具有函数 possible_lyrics()
和 possible_album()
。下次试试看!
我创建了一个 dataset,其中包含披头士乐队的所有原创歌曲。我想使用 genius
包获取所有歌曲的歌词。我使用下面的代码获取歌词但是抛出一个错误。
map(beatles_songs$song, ~ genius_lyrics("The Beatles", ., "simple"))
Error in read_xml.response(x$response, ..., as_html = as_html) :
Not Found (HTTP 404).
In addition: Warning message:
In request_GET(session, url) : Not Found (HTTP 404).
我想这可能是因为列表中的歌曲名称与genius.com中的歌曲名称不匹配,但我不知道如何检查。那么我应该怎么做才能同时获取所有歌曲的歌词呢?
purrr
包有许多处理警告和错误的函数。我建议像下面这样的东西,灵感来自 this example:
genius_lyrics_s <- safely(genius::genius_lyrics)
beatles_songs <- tibble(song = c("Mr. Moonlight", "She Loves You", "Under my Thumb", "Octopus's Garden"))
map(beatles_songs$song, ~ genius_lyrics_s("The Beatles", ., "simple")) %>%
map("result") %>%
compact()
在您的情况下,获得歌曲结果的最佳方式是使用 add_genius()
。
beatles %>%
add_genius("The Beatles", song)
正是出于这个原因,genius 包具有函数 possible_lyrics()
和 possible_album()
。下次试试看!