read_html не получает все данные с простой HTML-страницы, а возвращает неполный HTML? - PullRequest
4 голосов
/ 21 сентября 2019

read_html() обычно возвращает все html страницы для данного URL.

Но когда я пробую этот URL, я вижу, что не вся страница возвращается.

Почему это (и что более важно, как я могу исправитьэто)?

Воспроизводимый пример

page_html <- "https://raw.githubusercontent.com/mjaniec2013/ExecutionTime/master/ExecutionTime.R" %>% 
  read_html

page_html %>% html_text %>% cat
# We can see not all the page html has been retrieved

# And just to be sure
page_html %>% as.character

Заметки

  • Похоже, github - это нормально, когда боты посещают , так что я неНе думаю, что это проблема, связанная с github
  • Я попытался сделать то же самое с библиотекой ruby ​​Nokogiri.Это дает точно такой же результат, как read_html.Похоже, что это не то, что специфично для R или read_html()

1 Ответ

1 голос
/ 21 сентября 2019

Похоже, он обрабатывает оператор присваивания на странице как незамкнутый тег.

fakepage <- "<html>the text after <- will be lost</html>"

read_html(fakepage) %>%
  html_text()

[1] "the text after "

Поскольку страница, которую вы ищете, представляет собой простой текстовый файл, вы можете использовать readr::read_file() в этом случае.

readr::read_file("https://raw.githubusercontent.com/mjaniec2013/ExecutionTime/master/ExecutionTime.R")
...