从R中的url获取重定向的数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从R中的url获取重定向的数量相关的知识,希望对你有一定的参考价值。

我必须从我的数据框中的url中提取一个功能 - 重定向的数量。有没有办法在py中找到R中的数字:

r = requests.get(url)
i=0
    for h in r.history:
                i=i+1
print(i)
答案

来自httr::GET的返回值完全没有记录,但重定向的标题等似乎出现在$all_headers对象中:

> 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的返回值是一个httr::response对象,其中包含?httr::response的核心文档。您可以使用str()检查整个对象,以查看对大多数R用户不重要的部分。它已被记录,如永远。我不知道哪些人可能会感到困惑,因为它没有文档。也许头顶在云层之上......也许在轨道或太空或其他东西。

由于你想要的是重定向数,你可能真的关心重定向与所有响应头的天真计数。例如

res <- httr::GET("http://1.usa.gov/1J6GNoW")
sum(((sapply(res$all_headers, `[[`, "status") %% 300) == 1))

这是3(可能不是你想要的)。

length(res$all_headers)

是4并且我怀疑你应该在重定向中包含4xx响应,但如果它只是HTTP链中3xx与总数的比例,你可能会更清楚。

您可能还想考虑:

cat(rawToChar(curl::curl_fetch_memory("http://1.usa.gov/1J6GNoW")$headers))

从中计算实际的重定向(取决于实际的“任务”)。

以上是关于从R中的url获取重定向的数量的主要内容,如果未能解决你的问题,请参考以下文章

Linkedin OAuth 2.0 重定向 URL 不能包含片段标识符 (#)

AngularJS - 页面重定向到 Angular js 中的其他页面,同时尝试从 url 获取参数

302 登录重定向后被 IE 删除的 URL 片段

从 url android 获取最终重定向的 url

从 jquery ajax statuscode 401 获取位置重定向 url

Discord 使用 url-query 中的“代码”发送 Oauth2 重定向 url。如何在我的谷歌脚本中获取该代码