Как скрести таблицу в R, которая требует нажатой кнопки для просмотра таблицы? - PullRequest
0 голосов
/ 03 апреля 2020

Как вам почистить таблицу, где вам нужно нажимать на вкладки и кнопки, чтобы просмотреть таблицу на веб-сайте.

Это шаги для простого просмотра таблицы на https://edudata.fldoe.org/ReportCards/Schools.html?school=0000&district=00:

  1. Нажмите «Выпускной и после»
  2. Нажмите «Частота продолжения обучения после средней школы»
  3. Нажмите «Создание таблицы данных продолжения после окончания школы»
  4. Нажмите «Просмотр данных»

R Версия 3.6.2

Я начал использовать rvest_0.3.5

read_html("https://edudata.fldoe.org/ReportCards/Schools.html?school=0000&district=00")
node <- url %>% 
    html_nodes("div.my_container.margin_top_170") %>% 
    html_nodes("div.col-sm-12.col-md-12.col-lg-12.mt-2") %>% 
    html_nodes("div") %>% 
    html_nodes("#accgrad")
node
[1] <div id="accgrad" class="collapse" aria-labelledby="gradhead" data-parent="#primaryaccordion"

Я проверил HTML и id, class и parent совпадают там, где я хочу быть, но я не могу больше go в своем R-скрипте для поиска таблицы.

Я также пытался использовать xml2_1.2.2

theurl <- getURL("https://edudata.fldoe.org/ReportCards/Schools.html?school=0000&district=00")
tables <- readHTMLTable(theurl)
tables
$`NULL`
   A  B  C  D  F
1               

$`NULL`
   A  B  C  D  F
1               

[[3]]
  TS&I CS&I
1    

Я заметил, что есть скрипт, который выглядит так, как будто он извлекает данные, но мне не хватает html знаний, чтобы быть уверенным.

<script> $("#accgrad").load("accordions/acc_graduation.html");</script>

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

<table id="tablePostsecenroll" class="display no-footer dataTable dtr-inline" 
style="width:100%;" role="grid" aria-describedby="tablePostsecenroll_info">

Как только я получу доступ к таблице, я захочу прочитать ее в data.frame. Но, вероятно, я смогу это понять, когда получу доступ к тексту таблицы html.

Спасибо, что нашли время заняться этой проблемой!

1 Ответ

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

Данные отсутствуют на странице источника. Генерируется javascript. Таким образом, rvest нельзя использовать для прямой очистки таблицы данных.

Один из некоторых подходов заключается в использовании XHR: найти URL-адрес запроса, который возвращает ваши данные (откройте Chrome или Firefox инструменты разработчика , go на вкладку Сеть, загрузите страницу / данные и найдите соответствующий запрос). Как только вы найдете его, заставьте свой скребок отправлять запросы на этот URL.

...