从R中的javascript(网页)刮取xls文件

时间:2014-10-15 19:49:17

标签: javascript r

我正在尝试创建一个R脚本,该脚本具体详细说明如何获取我在R中用于分析的数据,以实现可重现性。通常第一步就像将xls文件的URL分配给R中的变量并从那里继续进行一样简单,但我正在搜索的网站似乎通过javascript(我不知道的语言)生成其xls文件。

按照以下步骤操作示例XLS:

  1. 转到http://hcupnet.ahrq.gov/HCUPnet.jsp?Id=B08F84A071883804&Form=SelDXPR&JS=Y&Action=%3E%3ENext%3E%3E&_DXPR=DX1
  2. 点击“校长诊断”
  3. 在文本框中输入“599.0”(不带引号),并选中“单独分别检查每个代码”的单选按钮
  4. 点击“下一步”
  5. 在此页面上检查所有单选按钮
  6. 点击“下一步”
  7. 在此页面上检查所有单选按钮
  8. 点击“下一步”
  9. 在此页面上,您应该看到所有数据以及一些链接。其中一个链接标题为“将结果另存为Excel电子表格”。单击此链接将下载包含数据的XLS文件到您的计算机。

    我已经检查了该元素,并且可以清楚地看到它正在查询数据库,我只是不完全确定如何将该查询放入我的R脚本中以拉下xls文件。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

(可能在技术上不是一个完整的答案,但评论框不允许真正的格式化)

RSelenium可以执行所有这些操作。但是,会有多种不同的选择/组合选项吗?如果没有,你可以建立一个像这样的URL列表:

http://hcupnet.ahrq.gov/HCUPnet.jsp?Parms=H4sIAAAAAAAAACWJPQ.CMBgG_5KYMDACHSTGBgUT16fvtcrXoos_nybc5ab766evfDcU52vnonsVmlVWVfCnFIcQw9rXo0wEDIgsrGwk3ppkNQ0tTnb72BNPP7YX7jzyy6YDzbkdSuxNr2gAAAA6D4E19A7096C3AE9FD48005A5B0802A684BBBEB8

每次下载都会直接进入该页面。您可以通过点击 Esc 来捕获该网址,而不是实际下载XLS文件,然后从位置栏复制网址。

在该页面上,您可以使用XML库或rvest来提取并提取以下代码后的onclick属性:

<a href="Javascript:void(0)" 
   onclick="window.open('HCUPnet.xls?Id=0A8C3E07CD01B562&amp;Form=DispTab&amp;JS=&amp;Action=%3E%3ENext%3E%3E&amp;__InDispTab=Yes&amp;_Results=Save&amp;_Results3=&amp;SortOpt=');">
<img height="19" src="arrow_off3.gif" alt="" align="absMiddle" width="15" border="0">
 Email a link to this page</a>

(我包含完整的锚引用,因为您需要在XPath或CSS选择器中使用它来查找该标记,但您可能只需执行XPath或CSS“contains”for {{也可以在HCUPnet.xls属性中添加1}}。

然后,只需从中提取onclick字符串,并在HCUP…调用中将http://hcupnet.ahrq.gov/添加到其中。