проверка статуса веб-сайта по нескольким URL-адресам с помощью lapply - обработка ошибок - PullRequest
0 голосов
/ 20 июня 2019

Я хочу проверить состояние нескольких веб-сайтов (около 8000).

Я нашел этот замечательный пример: проверка правильности списка URL-адресов с помощью GET

This solution uses this code: 
websites <- read.table(header=T, text="website
1   www.msn.com
2   www.wazl.com
3  www.amazon.com
4 www.rifapro.com")
library(httr)
urls <- paste0(ifelse(grepl("^https?://", websites$website, ig=T), "", "http://"),
          websites$website)
lst <- lapply(unique(tolower(urls)), function(url) try(HEAD(url), silent = T))
names(lst) <- urls
sapply(lst, function(x) if (inherits(x, "try-error")) -999 else status_code(x))

Однако для некоторых веб-сайтов это занимает много времени, например, если я использую http://www.chewy.com вместо www.wazl.com.

Вот несколько примеров ссылок, которые отлично работают, если я исключу последнюю жевательную ссылку:

501 http://www.bedrockdata.com
502 http://www.beecroftortho.com
503 http://secure.beenevaluated.com
504 http://beercitizen.com
951 http://www.chewy.com

Почему это? Моя первая идея - использовать функцию тайм-аута, но я не знаю, где ее реализовать. Я не получаю никакого сообщения об ошибке, код просто не закончится, и мне придется перезапустить сеанс R.

...