R Download .csv file tied to input boxes and a “click” button

独自空忆成欢 提交于 2019-12-12 04:07:22

问题


I am attempting to download a .csv file from https://www.fantasysharks.com/apps/bert/forecasts/projections.php? that is tied directly the input settings (is not a static download link) and load it into R. After the drop boxes are filled in, you then have to click on the download .csv button. I found this Using R to "click" a download file button on a webpage that details a bit how to do it using POST, but am unable to get it to work with some modifications to that code. I have attempted this code:

library(httr)
library(rvest)
library(purrr)
library(dplyr)

POST("https://www.fantasysharks.com/apps/bert/forecasts/projections.php",
 body = list('League'=-1, 'Position'=1, 'scoring'=16, 'Segment'=596,  'uid'=4),
 encode = "form") -> res
res

but coming up with the error:

Response [https://www.fantasysharks.com/apps/bert/forecasts/projections.php]
  Date: 2017-09-10 15:44
  Status: 406
  Content-Type: text/html; charset=iso-8859-1
  Size: 286 B
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /apps/bert/forecasts/projections.php could not be found on t...
</body></html>

回答1:


Here is a simpler way to get a CSV from a URL:

segment <- 596
position <- 1
scoring <- 16
league <- -1
uid <- 4
csv_url <- sprintf("https://www.fantasysharks.com/apps/bert/forecasts/projections.php?csv=1&Segment=%s&Position=%s&scoring=%s&League=%s&uid=%s",segment,position,scoring,league,uid)
res <- read.csv(url(csv_url))

First you set the parameters into different variables that you will later use to generate the download link with sprintf. Then you use the url function to download the file from the generated URL and finally read the file with read.csv.



来源:https://stackoverflow.com/questions/46142655/r-download-csv-file-tied-to-input-boxes-and-a-click-button

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!