Соскоблите таблицу визуализации Google с веб-страницы в R - PullRequest
0 голосов
/ 19 января 2020

Попытка подать таблицу рыночной оценки с этой веб-страницы: https://www.starcapital.de/en/research/stock-market-valuation/ Веб-сайт является динамическим c и запрашивает местоположение пользователя. Интересующая таблица указана как класс "google-visualization-table-table".

Я пробовал следующий код r

library(rvest)

url <- "https://www.starcapital.de/en/research/stock-market-valuation/"
valuation <- url %>%
  html() %>%
  html_nodes(xpath='//*[@id="infotable_div2"]/div/div/table') %>%
  html_table()
valuation <- valuation[[1]]

, и я не получаю ошибки, но нет результатов. Что не так?

1 Ответ

2 голосов
/ 19 января 2020

Это проблема, с которой вы будете сталкиваться довольно часто при очистке веб-сайтов. Проблема в том, что эта веб-страница является динамической c. То есть он использует JavaScript для создания визуализации, и это делается после загрузки страницы. И, что особенно важно, после rvest загрузки страницы, поэтому вы не видите ее в своем коде. Я подтвердил это, отключив JavaScript в Chrome и вижу, что на странице отсутствует диаграмма.

Тем не менее, вам не повезло! Я снова использовал сетевую панель Chrome Developer Tools, чтобы просмотреть запросы, сделанные на странице. Страницы, подобные этой, которые динамически создают диаграммы, часто делают отдельный сетевой запрос для сбора данных перед созданием диаграммы. После некоторой прокрутки и осмотра я увидел один, который выглядит как набор данных, который вас интересует:

https://www.starcapital.de/fileadmin/charts/Res_Aktienmarktbewertungen_FundamentalKZ_Tbl.php?lang=en

Откройте его в своем браузере и возьмите взгляд. Дайте мне знать, если это те данные, которые вы надеялись получить. Это несколько нестандартный формат JSON, поэтому вам может понадобиться написать немного кода, чтобы передать его в R. Посмотрите пакет jsonlite для манипулирования JSON и httr пакет для передачи данных с этого URL в R.

Редактировать: альтернативным подходом может быть использование пакета R, который может запускать динамическую c часть страницы (которая получает данные для создания диаграммы / таблицы), такие как splashr . Есть несколько других пакетов R, которые могут это сделать, но с этим я знаком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...