Как прочитать список 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
заботится о выводе специальных символов, таких как "новая строка" и "табуляция"