从 R 中的 url 获取重定向的数量
get the number of redirects from a url in R
我必须从我的数据框中的 url 中提取一个特征——重定向的数量。有没有办法像 python:
那样在 R 中找到数字
r = requests.get(url)
i=0
for h in r.history:
i=i+1
print(i)
httr::GET
中的 return 值完全没有记录,但是重定向中的 headers 等似乎出现在 $all_headers
object 中:
> url = "http://github.com"
> g = httr::GET(url)
> length(g$all_headers)
[1] 2
因为 http 重定向到 https。如果您直接访问 https,则看不到重定向:
> url = "https://github.com"
> g = httr::GET(url)
> length(g$all_headers)
[1] 1
httr::GET
的 return 值是一个 httr::response
object,其核心文档位于 ?httr::response
。您可以使用 str()
检查 whole object 以查看对大多数 R 用户而言不重要的部分。它已被记录在案,例如,永远。我不知道人们可能会因为它没有文档而感到困惑。也许头在云层之上……也许在轨道上或 space 或其他东西。
由于您想要的是重定向计数,因此您可能 实际上关心重定向 vs naive 所有响应的计数 headers。例如
res <- httr::GET("http://1.usa.gov/1J6GNoW")
sum(((sapply(res$all_headers, `[[`, "status") %% 300) == 1))
那是 3(也可能不是您想要的)。
length(res$all_headers)
是 4,我 怀疑 你应该在重定向中包含 4xx 响应,但如果它只是 3xx 的数量与总计的数量,你的问题可能会更清楚HTTP 链。
您可能还想考虑:
cat(rawToChar(curl::curl_fetch_memory("http://1.usa.gov/1J6GNoW")$headers))
计算实际的重定向(取决于实际的 "mission" 是什么)。
我必须从我的数据框中的 url 中提取一个特征——重定向的数量。有没有办法像 python:
那样在 R 中找到数字r = requests.get(url)
i=0
for h in r.history:
i=i+1
print(i)
httr::GET
中的 return 值完全没有记录,但是重定向中的 headers 等似乎出现在 $all_headers
object 中:
> url = "http://github.com"
> g = httr::GET(url)
> length(g$all_headers)
[1] 2
因为 http 重定向到 https。如果您直接访问 https,则看不到重定向:
> url = "https://github.com"
> g = httr::GET(url)
> length(g$all_headers)
[1] 1
httr::GET
的 return 值是一个 httr::response
object,其核心文档位于 ?httr::response
。您可以使用 str()
检查 whole object 以查看对大多数 R 用户而言不重要的部分。它已被记录在案,例如,永远。我不知道人们可能会因为它没有文档而感到困惑。也许头在云层之上……也许在轨道上或 space 或其他东西。
由于您想要的是重定向计数,因此您可能 实际上关心重定向 vs naive 所有响应的计数 headers。例如
res <- httr::GET("http://1.usa.gov/1J6GNoW")
sum(((sapply(res$all_headers, `[[`, "status") %% 300) == 1))
那是 3(也可能不是您想要的)。
length(res$all_headers)
是 4,我 怀疑 你应该在重定向中包含 4xx 响应,但如果它只是 3xx 的数量与总计的数量,你的问题可能会更清楚HTTP 链。
您可能还想考虑:
cat(rawToChar(curl::curl_fetch_memory("http://1.usa.gov/1J6GNoW")$headers))
计算实际的重定向(取决于实际的 "mission" 是什么)。