使用R语言下载带有JavaScript语句的文件

use*_*783 5 javascript csv r web-scraping export-to-csv

我想创建一个R脚本,除其他外,从http://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=zips下载棒球运动员投影数据.在数据表右上角附近的网页上有一个将此数据导出到.csv的链接,但它似乎是一个JavaScript命令(javascript:__ doPostBack('ProjectionBoard1 $ cmdCSV','').我很熟悉使用download.file().csv文件的链接,但我不知道如何处理这个.

如何使用R提取此数据?

Spa*_*man 1

下载不是一个可以轻松检索的简单响应download.file。网页构造一个带有一些巨大参数的 FORM,用于存储网页的状态,然后将其(以及大量 cookie)传递到服务器以获取 CSV 响应。

要在 R(或任何其他编程语言)中实现此功能,您需要构造该响应,通常只能通过首先获取网页、抓取 FORM 参数(和 cookie),然后构造您所做的精确 POST 请求来完成此操作当您点击链接时。

使用 RCurl 可能可以实现这一点,如果您有一个浏览器可以从其开发人员工具中保存 POST 请求参数,以便您可以使用 RCurl 来读取它们,有时会更容易。

网页抓取中的另一种常见技术本质上是运行可以通过脚本语言自动化的浏览器。有一个利用 Selenium 的 R 包可以做到这一点:

http://cran.r-project.org/web/packages/RSelenium/index.html

这里有一些相关(但不重复)的问题,例如:

如何使用 R 从需要 cookie 的 SSL 页面下载压缩文件

几年前发布的 R-help 帖子也提供了一些建议:

https://stat.ethz.ch/pipermail/r-help//2012-September/335769.html