假设我有以下网址:
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)
我没有得到最终的重定向。我非常感谢您的帮助!
为了便于将来参考,这里是我编写的一个小代码片段,用于使用 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)
| 归档时间: |
|
| 查看次数: |
1861 次 |
| 最近记录: |