Czy istnieje sposób na zdekodowanie linków tinyURL w R, dzięki czemu mogę zobaczyć, które strony faktycznie do nich odwołują się?dekodować tinyurl w R, aby uzyskać pełną ścieżkę URL?
Odpowiedz
Poniżej jest szybkie i zabrudzony rozwiązanie, ale powinno to zadanie:
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])
}
}
Zmienna 'u' poniżej zawiera jeden adres URL shortend i jeden regularny URL.
u <- c("http://tinyurl.com/adcd", "http://www.google.com")
Następnie można uzyskać rozszerzone wyniki, wykonując następujące czynności.
sapply(u, decode.short.url)
Powyższe powinno działać w przypadku większości usług, które skracają adres URL, a nie tylko tinyURL. Myślę.
HTH
Tony Breyal
Nie znam R, ale generalnie musisz wykonać zapytanie http do maleurl-url. Powinieneś otrzymać odpowiedź 301 z faktycznym adresem URL.
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))
użyłem kodu Tony Breyal, ale funkcja powrócił NA
wartości dla tych adresów URL, gdzie nie było URL przekierowania. Mimo że Tony umieścił w swoim przykładzie "google.com", uważam, że Google przekierowuje cię w każdym przypadku do jakiejś zlokalizowanej wersji google.com.
Oto jak zmodyfikowany kod Tony'ego sobie z tym poradzić:
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. Firebase uzyskać pełną ścieżkę URL odniesienia w dataSnapshot (JavaScript API)
- 2. Jak uzyskać pełną ścieżkę wirtualną aplikacji ASP.NET?
- 3. Jak uzyskać pełną ścieżkę, podając nazwę pliku?
- 4. Jak uzyskać pełną ścieżkę do pliku w VBScript?
- 5. jak uzyskać dokładną pełną ścieżkę do pliku w perlu
- 6. Jak uzyskać pełną ścieżkę do katalogu bieżącego pliku w Pythonie?
- 7. W systemie Linux, jak uzyskać pełną ścieżkę polecenia używam?
- 8. PHP stworzyć losowy plik TMP i uzyskać jego pełną ścieżkę
- 9. Jak połączyć dwa łańcuchy, aby zbudować pełną ścieżkę?
- 10. Użyj JDT, aby uzyskać pełną nazwę metody
- 11. Jak uzyskać pełną ścieżkę do pliku build.gradle przez Groovy?
- 12. Jak uzyskać pełną ścieżkę do argumentu wiersza polecenia filename?
- 13. Jak uzyskać pełną ścieżkę dostępu do pliku z wejściem plików
- 14. Jak uzyskać pełną ścieżkę dla procesu na OS X?
- 15. Szyny - Jak uzyskać ścieżkę pliku (nie ścieżkę URL) dla zasobów?
- 16. usunąć pełną ścieżkę, zachować nazwę pliku tylko
- 17. Jak "dekodować URL" ciąg w Emacs Lisp?
- 18. Jak uzyskać ścieżkę adres URL funkcji widoku w Django
- 19. Polecenie powłoki systemu Windows, aby uzyskać pełną ścieżkę do bieżącego katalogu?
- 20. uzyskać ścieżkę URL bez ostatniego segmentu
- 21. Jak uzyskać adres URL bazy w OctoberCMS?
- 22. Jak uzyskać długi adres URL z krótkiego adresu URL?
- 23. Jak uzyskać bezwzględną ścieżkę pliku wejściowego w R
- 24. Jak uzyskać bieżącą ścieżkę pliku w javascript
- 25. Aby uzyskać pełną listę aktywnych klientów wewnątrz Xorg
- 26. Jak uzyskać pełną ścieżkę od "../" w wierszu poleceń w skrypcie powłoki Linux
- 27. Making git diff --stat pokazać pełną ścieżkę dostępu do pliku
- 28. UNIX: Jak użyć polecenia Znajdź, aby znaleźć pełną ścieżkę jeśli podano częściowa ścieżka
- 29. Jak uzyskać pełną szerokość w PivotItem
- 30. Jak uzyskać pełną treść wiadomości w Gmailu?
Tony, masz dwa konta? –
@ JD-Long Tak, ale nie wiem jak połączyć oba konta. Ten na górze używa OpenID. Nie pamiętam nawet, jak zalogować się do tego na dole (z rysunkiem Danger Mouse). Jestem nowy w publikowaniu na stackoverflow. –