R - Извлечь файл CSV из ссылки javascript через RCurl - PullRequest
0 голосов
/ 25 октября 2018

У меня есть URL:

url <- "http://www.railroadpm.org/home/RPM/Performance%20Reports/BNSF.aspx"

, который содержит ссылку на CSV-файл, который я хотел бы скачать.Ссылка «Экспорт в CSV» на вышеуказанной странице.Проблема в том, что CSV-файл не является частью URL-адреса, а является Javascript.То, что я хотел бы сделать, это получить доступ к ссылке и создать фрейм данных из файла CSV.Javascript:

javascript:__doPostBack('ctl11$btnCSV','')

, и из этого я могу сказать, что идентификатор равен

"ctl11_btnCSV"

, но я не уверен, как это вписывается в RCUrl, который из SO, кажется, являетсялучший способ получить доступ к этим данным.Любая помощь будет оценена.

Спасибо.

1 Ответ

0 голосов
/ 29 октября 2018

В этот вопрос было затрачено ноль усилий (особенно после того, как ОП пришел к выводу, что RCurl является текущей наилучшей практикой для веб-споров в R), но в любое время вопрос о чистке веб-страниц SO, касающийся сайта SharePoint, может бытьответил (Microsoft SharePoint - одна из худших вещей, когда-либо изобретенных рядом с Windows), стоит опубликовать ответ.

library(rvest)
library(httr)

# make an initial connection to get cookies
httr::GET(
  "http://www.railroadpm.org/home/RPM/Performance%20Reports/BNSF.aspx"
) -> res

# retrieve some hidden bits we need to pass b/c SharePoint is a wretched thing.
pg <- content(res, as = "parsed")
for_post <- html_nodes(pg, "input[type='hidden']")

# post the hidden form & save out the CSV
httr::POST(
  "http://www.railroadpm.org/home/RPM/Performance%20Reports/BNSF.aspx",
  body = as.list(
    c(
      setNames(
        html_attr(for_post, "value"),
        html_attr(for_post, "id")
      ),
      `__EVENTTARGET` = "ctl11$btnCSV"
    )
  ),
  write_disk("meaures.csv"),
  progress()
) -> res
...