如有必要,将GET重定向到HTTPS

问题描述 投票:0回答:1

[当我尝试使用HTTP协议下载URL时,出现400错误:

library(httr)
x1 <- "http://www.sonnenwende-harsewinkel.de/öko-gas/bürgerwerke/"
resp <- httr::GET(x1, httr::timeout(60))
resp[["status_code"]]
#400

当我切换到HTTPS协议时,问题已解决:

x2 <- "https://www.sonnenwende-harsewinkel.de/öko-gas/bürgerwerke/"
resp <- httr::GET(x2, httr::timeout(60))
resp[["status_code"]]
#200

当我在Web浏览器中输入HTTP地址时,我将重定向到HTTPS地址。也可以使用httr进行重定向吗?

r web-scraping httr
1个回答
0
投票

为什么不这样做?

rGET <- function(url, ...)
{
  res <- httr::GET(url, ...)
  if(res$status_code == 400) 
    return(httr::GET(gsub("http://", "https://", url), ...))
  else
    return(res)
}

因此您可以这样做

rGET("http://www.sonnenwende-harsewinkel.de/öko-gas/bürgerwerke/")
#> Response [https://www.sonnenwende-harsewinkel.de/öko-gas/bürgerwerke/]
#>   Date: 2020-04-30 20:59
#>   Status: 200
#>   Content-Type: text/html; charset=UTF-8
#>   Size: 51.7 kB
#> <!DOCTYPE html>
#> <html lang="de-DE"><head>
#>     <meta charset="utf-8"/>
#> <link rel="dns-prefetch preconnect" href="https://u.jimcdn.com/" crossorigin="a...
#> <link rel="dns-prefetch preconnect" href="https://assets.jimstatic.com/" crosso...
#> <link rel="dns-prefetch preconnect" href="https://image.jimcdn.com" crossorigin...
#> <link rel="dns-prefetch preconnect" href="https://fonts.jimstatic.com" crossori...
#> <link rel="dns-prefetch preconnect" href="https://www.google-analytics.com" cro...
#> <meta name="viewport" content="width=device-width, initial-scale=1"/>
#> <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
#> ...
© www.soinside.com 2019 - 2024. All rights reserved.