Gibt es eine Möglichkeit, tinyURL-Links in R zu decodieren, sodass ich sehen kann, auf welche Webseiten sie sich beziehen?decodiere tinyurl in R, um den vollständigen URL-Pfad zu erhalten?
Antwort
Hier ist eine schnelle und schmutzige Lösung, sollte aber den Job erledigen:
library(RCurl)
decode.short.url <- function(u) {
x <- try(getURL(u, header = TRUE, nobody = TRUE, followlocation = FALSE))
if(class(x) == 'try-error') {
return(u)
} else {
x <- strsplit(x, "Location: ")[[1]][2]
return(strsplit(x, "\r")[[1]][1])
}
}
Die Variable 'u' unten enthält eine verkürzte URL, und eine normale URL.
u <- c("http://tinyurl.com/adcd", "http://www.google.com")
Sie können dann die erweiterten Ergebnisse erhalten, indem Sie Folgendes tun.
Das oben genannte sollte für die meisten Dienste funktionieren, die die URL nicht nur tinyURL verkürzen. Ich denke.
HTH
Tony Breyal
Ich weiß nicht, R aber im Allgemeinen müssen Sie eine HTTP-Anfrage an die tinyurl-URL machen. Sie sollten eine 301-Antwort mit der tatsächlichen URL zurückbekommen.
library(RCurl)
decode.short.url <- function(u) {
x <- try(getURL(u, header = TRUE, nobody = TRUE, followlocation = FALSE))
if(class(x) == 'try-error') {
return(u)
} else {
x <- strsplit(x, "Location: ")[[1]][2]
return(strsplit(x, "\r")[[1]][1])
}
}
(u <- c("http://tinyurl.com/adcd", "http://tinyurl.com/fnqsh"))
(sapply(u, decode.short.url))
verwendete ich Tony Breyal den Code, aber die Funktion zurückgegeben NA
Werte für diese URLs in denen es keine URL-Umleitung war. Obwohl Tony in seinem Beispiel "google.com" aufgeführt hat, denke ich, dass Google Sie auf jeden Fall an eine lokalisierte Version von google.com weiterleitet.
Hier ist, wie ich Tonys Code damit umgehen geändert:
decode.short.url <- function(u) {
x <- try(getURL(u, header = TRUE, nobody = TRUE, followlocation = FALSE))
if(class(x) == 'try-error') {
print(paste("***", u, "--> ERORR!!!!"))
return(u)
} else {
x <- strsplit(x, "Location: ")[[1]][2]
x.2 <- strsplit(x, "\r")[[1]][1]
if (is.na(x.2)){
print(paste("***", u, "--> No change."))
return(u)
}else{
print(paste("***", x.2, "--> resolved in -->", x.2))
return(x.2)
}
}
}
u <- list("http://www.amazon.com", "http://tinyurl.com/adcd")
urls <- sapply(u, decode.short.url)
- 1. Verwenden Sie JDT, um den vollständigen Methodennamen zu erhalten
- 2. SQL-Abfrage, um den vollständigen Hierarchiepfad zu erhalten
- 3. Wie man jQuery benutzt, um TinyURL zu erzeugen
- 4. Python: Konvertiere diese TinyURL (bit.ly, tinyurl, ow.ly) in vollständige URLs
- 5. Wie erhalten Sie den vollständigen Nachrichtentext in Gmail?
- 6. iPhone: Decodiere Zeichen wie \ U05de
- 7. Wie erhalten Sie den vollständigen Hostnamen in C#?
- 8. Tinyurl Stil Hash
- 9. LINQ, um den kleinsten Wert zu erhalten?
- 10. PHP Zufalls tmp-Datei erstellen und erhalten den vollständigen Pfad
- 11. Erhalten Sie den vollständigen Benutzernamen einen neuen Benutzernamen
- 12. Erhalten Sie den vollständigen DOM-Stapel als Zeichenfolge
- 13. Bitshift, um den Rest zu erhalten
- 14. So erhalten Sie den vollständigen Linktext mit Scrapy
- 15. Wie kann ich den nativen Vi-Modus in R erhalten, um persistent zu sein?
- 16. VBScript: Wie erhalten Sie den vollständigen Pfad des laufenden Prozesses?
- 17. Erhalten Sie den vollständigen Audio-Gerätenamen von Windows
- 18. Python kann den vollständigen Pfadnamen der Datei nicht erhalten
- 19. So erhalten Sie den vollständigen Befehlspfad für LSF gestartet
- 20. Gibt es eine Möglichkeit, den vollständigen Pfad des Abschriftenposts in Jekyll zu erhalten?
- 21. Wie ich codierte Zeichenfolge in iOS decodiere?
- 22. So erhalten Sie den vollständigen Pfad von StreamWriter
- 23. Regex, um den gesamten Text außerhalb der Klammern zu erhalten
- 24. Abstand um den Zeichenbereich in r entfernen
- 25. jquery auf Tropfen erhalten vollständigen Pfadnamen
- 26. Algorithmus, um MST in einem riesigen vollständigen Graph zu finden
- 27. Verwenden Sie sed, um den Dateinamen vom vollständigen Pfad abzurufen?
- 28. R: mit der Funktion apply auf einer Liste, um den Mittelwert mehrerer Werte zu erhalten
- 29. Erhalten vollständigen CPU-Namen ohne WMI
- 30. Keine vollständigen Antwortheader mit AFNetworking erhalten
Tony, haben Sie zwei Konten? –
@ JD-Long Ja, aber ich weiß nicht, wie man die beiden Konten kombiniert. Der obere verwendet OpenID. Ich kann mich nicht einmal daran erinnern, wie ich mich in den unteren einloggen kann (mit dem Bild Danger Mouse). Ich bin neu beim Posten auf Stackoverflow. –