如何在 R 中跟踪 url 的任何重定向?

Pat*_*ada 3 r rcurl httr

假设我有以下网址:

http://linkinghub.elsevier.com/retrieve/pii/S1755534516300379

当我将其输入到我的标准桌面浏览器时,我被重定向到:

http://www.sciencedirect.com/science/article/pii/S1755534516300379?via%3Dihub

但是,我无法在 R 中实现这一点。我尝试了 httr 和 RCurl 包。在httr的文档中,它说函数GET的使用如下:

library(httr)
GET("http://linkinghub.elsevier.com/retrieve/pii/S1755534516300379")
Run Code Online (Sandbox Code Playgroud)

应该会导致实际使用的网址(在任何重定向之后)。但是调用url时:

GET("http://linkinghub.elsevier.com/retrieve/pii/S1755534516300379")$url
Run Code Online (Sandbox Code Playgroud)

我没有得到最终的重定向。我非常感谢您的帮助!

Tal*_*ili 5

为了便于将来参考,这里是我编写的一个小代码片段,用于使用 HEAD 进行重定向(而不是 GET,这样就不会下载超出需要的内容)。它不适用于当前的问题,但可能会帮助将来的人们(使用更简单的场景)。

# FUNCTIONS
url_after_redirect_1 <- function(url) {
  library(httr)
  a <- HEAD(url)
  # headers(a)
  (a$all_headers[[2]])$headers$location  
}
url_after_redirect <- Vectorize(url_after_redirect_1)
Run Code Online (Sandbox Code Playgroud)