получить количество перенаправлений с URL в R - PullRequest
0 голосов
/ 29 ноября 2018

Я должен извлечь функцию - количество перенаправлений из URL в моем фрейме данных.Есть ли способ найти число в R, как в Python:

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Возвращаемое значение 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 ответовв перенаправлениях, но вы могли бы быть более понятным в своем вопросе, если бы это было просто число 3xx против общего в цепочке HTTP.

Вы также можете рассмотреть:

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

countфактическое перенаправление от этого (в зависимости от того, что является фактической «миссией»).

0 голосов
/ 29 ноября 2018

Возвращаемое значение из 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
...