Подготовка нескольких URL для веб-скрапинга с помощью rvest in R - PullRequest
0 голосов
/ 29 февраля 2020

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

library(rvest)
 url <- c("https://interestingengineering.com/due-to-the-space-inside-atoms-you-are-mostly- 
          made-up-of-empty-space",
          "https://futurism.com/mit-tech-self-driving-cars-see-under-surface-road",
          "https://techxplore.com/news/2020-02-socially-robot-children-autism.html",
          "https://eos.org/science-updates/hackathon-speeds-progress-toward-climate-model- 
          collaboration",
          "https://www.smithsonianmag.com/innovation/new-study-finds-people-prefer-robots- 
           explain-themselves-180974299/",
           "https://www.sciencedaily.com/releases/2020/02/200227144259.htm")

      page <-map(url, ~read_html(.x) %>% html_nodes("p") %>% html_text())

Этот код либо вернет извлеченное содержимое со всех URL-адресов.

, либо выдаст следующее сообщение об ошибке:

Ошибка в open.connection (x, "rb"): Ошибка при обработке кодирования содержимого: установлена ​​недопустимая длина кода

Или это сообщение об ошибке:

Ошибка при переносе: ошибка HTTP 410.

После последнего сообщения об ошибке я также получаю Browse [1]> в консоли.

Я попытался запустить URL-адреса из CSV file:

   urldoc<- read.csv("URLs for rvest.csv", stringsAsFactors=FALSE, sep = ",")
   page <-map(urldoc, ~read_html(.x) %>% html_nodes("p") %>% html_text())

Вывод print(urldoc) выглядит аналогично выводу из объединенного кода, но я получаю другое сообщение об ошибке:

Ошибка в файле doc_parse_file (con, кодировка = кодировка, as_ html = as_ html, опции = опции): ожидается одно строковое значение: [тип = символ; экстент = 83]

Я не могу запустить html_node или html_text для фрейма данных.

1) Как получить последовательный возврат без ошибок.
2) Еще лучше, как я могу использовать документ с URL-адресами вместо объединенной строки?

1 Ответ

1 голос
/ 29 февраля 2020

Кажется, ваша первая проблема была вызвана разрывом строк в ваших URL-адресах.

Что касается вашего второго вопроса: я мог бы воспроизвести вашу проблему с чтением из .csv. Вот решение, которое я нашел.

urldoc<- read.csv("URLs for rvest.csv", stringsAsFactors=FALSE, sep = ",", header=FALSE)
page <-map(urldoc[,1], ~read_html(.x) %>% html_nodes("p") %>% html_text())

Убедитесь, что ваш .csv имеет только один URL на строку, и укажите столбец, из которого вы хотите прочитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...