Проверьте, доступен ли html

#r

#r

Вопрос:

Я хотел бы знать, как я могу проверить, доступен ли html. Если это не так, я хотел бы контролировать возврат, чтобы избежать остановки скрипта по ошибке. Пример:

 arq <- readLines("www.pageerror.com.br")
print(arq)
  

Ответ №1:

Альтернативой является try() то, что с ним проще работать, trycatch() но он не такой функциональный. Вам также может потребоваться подавить предупреждения, поскольку R сообщит, что он не может разрешить адрес.

Вы хотите что-то подобное в своем скрипте:

 URL <- "http://www.pageerror.com.br"
arq <- try(suppressWarnings(readLines(con <- url(URL))), silent = TRUE)
close(con) ## close the connection
if(inherits(arq, "try-error")) {
    writeLines(strwrap(paste("Page", URL, "is not available")))
} else {
    print(arq)
}
  

silent = TRUE Бит подавляет сообщение об ошибках (если вы оставите это значение по умолчанию FALSE , то R сообщит об ошибке, но не прервет сценарий). Мы оборачиваем потенциально вызывающий ошибку вызов функции try(...., silent = TRUE) , suppressWarnings() который используется для подавления предупреждений. Затем мы проверяем класс возвращаемого объекта arq , и если он наследуется от class "try-error" , мы знаем, что страница не может быть восстановлена, и выдаем сообщение, указывающее на это. В противном случае мы можем печатать arq .

Ответ №2:

?tryCatch — Сказал Нуфф. <— За исключением, по-видимому, нет, потому что pageweaver требует больше символов в ответе. Итак, «Если полтора цыпленка снесут полтора яйца за полтора дня, сколько яиц снесут девять цыплят за девять дней?» Хорошо, достаточно долго.

Комментарии:

1. -1 определенно не «nuff сказал», потому ?trycatch что не возвращает никакой информации, а использовать tryCatch ее непросто — пример был бы полезен.

2. @Abe — для этого и предназначен текст внизу ?tryCatch выходных данных.

3. нижняя часть ?tryCatch все еще оставляет меня (и, по-видимому, многих других) в поисках ответов на SO.