Разобрать данные таблицы в R, но она пуста, javascript? - PullRequest
1 голос
/ 16 апреля 2020

Мой первый пост и новичок с буквой R, поэтому терпение попросило, если бы я нашел ответ на свой вопрос в другом месте.

Я пытаюсь собрать таблицу с данными, полученными с нескольких сайтов из CME ( https://www.cmegroup.com/trading/energy/crude-oil/western-canadian-select-wcs-crude-oil-futures.html - один).

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

library(rvest)

library(dplyr)

WCS_page <- "https://www.cmegroup.com/trading/energy/crude-oil/canadian-heavy-crude-oil-net-energy-index-futures_quotes_globex.html"
WCS_diff <- read_html(WCS_page)

month <- WCS_diff %>%
    rvest::html_nodes('th') %>%
    xml2::xml_find_all("//scope[contains(@col, 'Month')]") %>%
    rvest::html_text()

price <- WCS_diff %>%
    rvest::html_nodes('tr') %>%
    xml2::xml_find_all("//td[contains(@class, 'quotesFuturesProductTable1_CLK0_last')]") %>%
    rvest::html_text()

WTI_df <- data.frame(month, price)

knitr::kable(
    WTI_df %>% head (10))


1 Ответ

0 голосов
/ 16 апреля 2020

Да, страница использует JS для загрузки данных.

Простой способ проверить это просмотреть источник , а затем найти часть текста, который вы видели в Таблица. Например, слово «май» никогда не отображается в необработанном HTML, поэтому оно должно быть загружено позже.

Следующим шагом является использование чего-то вроде Chrome DevTools для проверки сетевых запросов, которые были сделаны. В этом случае есть явный победитель, и ваши структурированные данные поступают отсюда:

https://www.cmegroup.com/CmeWS/mvc/Quotes/Future/6038/G

...