Как получить несколько таблиц с веб-страницы с помощью R

Я хочу извлечь все таблицы вакцин с описанием слева и их описанием внутри таблицы с помощью R,

это ссылка на веб-страницу

вот как выглядит первая таблица на веб-странице:

Я пытался использовать пакет XML, но мне это не удалось, я использовал:

vup<-readHTMLTable("https://milken-institute-covid-19-tracker.webflow.io/#vaccines_intro", which=5)

Я получаю сообщение об ошибке:


Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘readHTMLTable’ for signature ‘"NULL"’
In addition: Warning message:
XML content does not seem to be XML: '' 

Как это сделать?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
149
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта веб-страница не использует таблицы, поэтому причина вашей ошибки. Из-за множества подразделов и скрытого текста форматирование на странице довольно сложное и требует индивидуального нахождения интересующих узлов.

Я предпочитаю использовать пакеты «rvest» и «xml2» для более простого и прямого синтаксиса. Это не полное решение, и оно должно заставить вас двигаться в правильном направлении.

library(rvest)
library(dplyr)

#find the top of the vacine section
parentvaccine <- page %>% html_node(xpath = "//div[@id='vaccines_intro']") %>% xml_parent()

#find the vacine rows
vaccines <- parentvaccine %>% html_nodes(xpath = ".//div[@class='chart_row for_vaccines']")

#find info on each one
company <- vaccines %>% html_node(xpath = ".//div[@class='is_h5-2 is_developer w-richtext']") %>% html_text()
product <- vaccines %>% html_node(xpath = ".//div[@class='is_h5-2 is_vaccines w-richtext']") %>% html_text()
phase <- vaccines %>% html_node(xpath = ".//div[@class='is_h5-2 is_stage']") %>% html_text()
misc <- vaccines %>% html_node(xpath = ".//div[@class='chart_row-expanded for_vaccines']") %>% html_text()


#determine vacine type
#Get vacine type
vaccinetypes <- parentvaccine %>% html_nodes(xpath = './/div[@class = "chart-section for_vaccines"]') %>% 
   html_node('div.is_h3') %>% html_text()
#dtermine the number of vacines in each category
lengthvector <-parentvaccine %>% html_nodes(xpath = './/div[@role = "list"]') %>% xml_length() %>% sum()
#make vector of correct length
VaccineType <- rep(vaccinetypes, each=lengthvector)

answer <- data.frame(VaccineType,  company, product, phase)
head(answer)

Чтобы сгенерировать этот код, необходимо прочитать html-код и определить правильные узлы и уникальные атрибуты для нужной информации.

Большое спасибо @Dave2e, могу я также добавить столбец с типом вакцины? ДНК, белковая субъединица, РНК и т. д., я хочу немного Institution VaccineType Phase Country

user432797 12.12.2020 19:14

А также, как вы получили классы? есть ли функция, которую я могу использовать для получения всех классов?

user432797 12.12.2020 21:20

@user432797 user432797 Не имея информации в стандартном формате таблицы, мне пришлось прочитать html и определить общие узлы и атрибуты. Я отредактировал код, добавив информацию о типе вакцины.

Dave2e 12.12.2020 22:36

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