Попробуйте заполнить "" в случае ошибки в цикле html_nodes - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь извлечь данные путем анализа текста с помощью html_nodes, используя URL-адреса, которые я сохранил в объекте с именем url.Я создал цикл, который читает и очищает каждый URL.

library(rvest)
for (i in url) {
  tex <- read_html(i)
  p_text <- tex %>%
    html_nodes("p") %>%
    html_text()
  a <- p_text
}

Поскольку некоторые URL не работают, появляется следующее сообщение:

Ошибка в open.connection (x, "rb"): не удалось разрешить хост: app.lo

Я хочу ввести в цикл следующее: если URL-адрес не работает, предположим, что текст пуст, и пусть циклПродолжить.Это действительно проблема, потому что цикл останавливается, и я пытался удалить некоторые URL, но у меня есть около 200 000 htmls.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете просто переключиться на html_node вместо html_nodes.

html_node вернет NA, если ничего не найдено.

Без примеров URL, я не могу проверить, однако.

См. Эти вопросы и ответы для более подробной информации

0 голосов
/ 16 мая 2018

Это может быть достигнуто простой tryCatch и обработкой ошибок. Я также представил список a, в котором вы можете хранить свои выходные данные (в настоящее время вы будете перезаписывать свои выходные данные в каждом цикле.)

library(rvest)
a <- list()
for (i in 1:length(url)) {
  url_use = url[[i]]
  a[[i]] <- 
    tryCatch({
        read_html(url_use) %>%
            html_nodes("p") %>%
            html_text()
    }, error = function(e) NA)
}

Дайте мне знать, если это не то, что вы имели в виду.

...