Ich versuche, Texte aus dem chartlyrics API zu bekommen. Ich schreibe eine R-Funktion, die funktioniert, aber nicht innerhalb einer Schleife. Mein Skript ist:Fehler bei curl :: curl_fetch_memory (url, handle = handle): Fehler, wenn Daten aus dem Peer-Empfang
library(httr)
library(RCurl)
library(XML)
df <- data.frame(artist = c('Led Zeppellin', 'Adele'), song = c('Rock´n roll', 'Hello'), stringsAsFactors = F)
make.querrye <- function(xx) {
names_ok <- gsub(" ", "&", xx)
names_ok2 <- paste("\'", names_ok, "\'", sep = '')
querrye <- paste("http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=", names_ok[1],"&song=", names_ok[2], sep='')
data <- GET(querrye)
aa <- content(data, "text")
doc <- htmlParse(aa, asText=TRUE)
plain.text <- xpathSApply(doc, "//lyric//text()[not(ancestor::script)][not(ancestor::style)][not(ancestor::noscript)][not(ancestor::form)]", xmlValue)
if (length(plain.text)==0) {
plain.text2 <- 'Lyrics not found'
} else {
plain.text2 <- iconv(plain.text, from = "UTF-8", to = "latin1", sub = NA, mark = TRUE, toRaw = FALSE)
}
return(plain.text2)
}
names <- c(df$artist[1], df$song[1])
make.querrye(names) #- it works
names <- c(df$artist[2], df$song[2])
make.querrye(names) #- it also works
Aber meine Funktion funktioniert nicht in einer Schleife
for (ii in 1:2){
names <- c(df$artist[ii], df$song[ii])
print(names)
make.querrye(names)
}
ich den follwing Fehler:
Error in curl::curl_fetch_memory(url, handle = handle) : Failure when receiving data from the peer
sind Sie hinter einem Proxy? – nachti
Entschuldigung, ich habe heute Ihren Kommentar gesehen. In der Tat bin ich mir deiner Frage nicht sicher. Ist eine wirklich alte Frage und jetzt arbeite ich nicht daran, dann schließe ich die Frage (wenn ich kann, weil ich es vorher nie getan habe). In dieser langen Zeit habe ich gesehen, dass andere eine ähnliche Sache machen und ich denke, dass die Lösung darin besteht, etwas Zeit zwischen den Anfragen zu investieren, aber ich bin mir nicht sicher. Wie auch immer, danke für deine Antwort – pjperez