我想检查url是否重定向到R中的另一个页面

时间:2014-02-10 15:05:27

标签: r http url

我需要检查网址是否重定向到R中的另一个页面。是否可能?

2 个答案:

答案 0 :(得分:4)

查看httr包,然后查看GET功能:

> library(httr)
> names(GET("http://www.stackoverflow.com"))
[1] "url"         "handle"      "status_code" "headers"     "cookies"
[6] "content"     "times"       "config"     
> GET("http://www.stackoverflow.com")$status_code
[1] 200

答案 1 :(得分:2)

按建议使用HEAD,但检查返回对象的网址,输入的网址是否相同

url <- "https://google.ca/"
stat <- httr::HEAD(url)
stat
Response [https://www.google.ca/]
  Date: 2018-02-17 13:57
  Status: 200
  Content-Type: text/html; charset=ISO-8859-1
<EMPTY BODY>
stat$times
     redirect    namelookup       connect   pretransfer starttransfer         total 
     0.054985      0.000030      0.000033      0.000109      0.082320      0.137389 

times的第一个元素是redirect。我无法确保重定向的网页看起来像这样,所以我只需检查urlHEAD(url)$url是否相同:

HEAD(url)$url == url
[1] FALSE # FALSE for redirect

请注意,将/添加到网址末尾的网页也会被视为重定向:

HEAD("https://www.google.ca")$url == "https://www.google.ca"
[1] FALSE
HEAD("https://www.google.ca/")$url == "https://www.google.ca/"
[1] TRUE

所以你可能想要处理返回的url,如果你关心这样的小事是否被认为是重定向的。