Как прочитать список HTML с веб-страницы в R

Рассмотрим сайт, который имеет 4 или более списков <li> HTML элементы. Например, такой веб-сайт: https://www.cprd.com/bibliography/bibliography.html

С помощью xml2 (или другой подход, но xml2 и трубопровод предпочтительнее), каков наилучший способ извлечь список в вектор символов?

url <- 'https://www.cprd.com/bibliography/bibliography.html'
library(xml2) 
page <- read_html(url)

На выходе должен быть список <li> списки на сайте. (есть один список на каждый год)

И в первом списке должен быть первый пункт, равный "Оценка смещенности каналов среди инициаторов препаратов, снижающих уровень глюкозы: британское когортное исследование. Ankarfeldt MZ, Thorsted BL, Groenwold RH, Adalsteinsson E, Ali MS, Klungel OH. Клин Эпидемиол. 2017;9:19-30.

РЕДАКТИРОВАТЬ: комментарии предлагают

library(rvest)
output<-page %>% html_nodes('ol') %>% lapply(html_nodes, 'li') %>% lapply(html_text, trim = TRUE)
output[[1]][1]

[1] "Assessment of channeling bias among initiators of glucose-lowering drugs: A UK cohort study. \r\n        Ankarfeldt MZ, Thorsted BL, Groenwold RH, Adalsteinsson E, Ali MS, Klungel OH. Clin Epidemiol. 2017;9:19㤼㸶30."

1 ответ

С помощью rvest (это небольшое улучшение по сравнению с xml2):

library(rvest)

url <- 'https://www.cprd.com/bibliography/bibliography.html'

page <- read_html(url) %>% 
  html_nodes('ol') %>% 
  map(~html_nodes(.x, 'li') %>% 
        html_text() %>% 
        gsub(pattern = '\\t|\\r|\\n', replacement = '')
  )

Тот gsub заботится о выводе специальных символов, таких как "новая строка" и "табуляция"

Другие вопросы по тегам