Загрузить созданную таблицу Highcharts в R - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь загрузить файл csv данных, соответствующий диаграмме на следующем веб-сайте:

http://vixcentral.com/

Если я нажму на меню кнопка в правом верхнем углу диаграммы есть возможность загрузить данные диаграммы в CSV.

Проблема в том, что эта кнопка, кажется, генерирует ссылку для загрузки, которая работает только временно, поэтому я не могу использовать обычный загрузчик, такой как read_csv или rio :: import, чтобы вытащить файл в R.

Кажется, и диаграмма, и ссылка для скачивания генерируются Highcharts javascript.

Есть ли какой-либо простой способ загрузить эти данные в R, выяснив ссылку?

Или это должно быть упражнение по очистке?

1 Ответ

1 голос
/ 29 мая 2020

Если щелкнуть правой кнопкой мыши по экрану и нажать «Проверить элемент», а затем go перейти на вкладку «Сеть», можно увидеть запросы xhr, выполняемые для получения данных (например, при щелчке по различным диаграммам).

Вы заметили, что вас интересует результат http://vixcentral.com/ajax_update/?_=1590762673737. Число в конце этого URL-адреса - это Unix эпоха текущего времени. Вот почему это меняется.

Существует некоторая защита от парсинга в том смысле, что они пытаются блокировать запросы, поступающие не с их собственного сайта. Установив заголовок X-Requested-With на "XMLHttpRequest", он работает. Вы можете просмотреть заголовки, используемые для этого запроса, щелкнув его на экране «Проверить элемент» своего браузера. Устанавливается множество заголовков, и, удалив каждый из них и протестировав, я обнаружил, что это единственный, который нужен для ваших целей.

Ниже считывает данные и преобразует их в объект R, используя jsonlite.

res <- httr::GET("http://vixcentral.com/ajax_update/?_=1590762673737",
                 add_headers("X-Requested-With" = "XMLHttpRequest"))

res_text <- content(res, "text")

jsonlite::fromJSON(res_text)
...