从网址

时间:2017-10-04 16:09:48

标签: r download

它并没有真正与stackoverflow政策保持一致,因为我没有展示我所做的事情,但由于缺乏技术专长,我真的不知道如何开始这个问题。希望有人可以发布解决方案,或者至少指出我正确的方向。

我想从这个网站下载所有数据:

http://aps.dac.gov.in/APY/Public_Report1.aspx

我需要下载所有数据,即所有季节*全年*所有州*所有作物。更长(令人沮丧!)的方法是单击所有框并按下载。

但是,我想知道是否有人有任何编程解决方案来下载这些数据。我最好想在R中这样做,因为这是我理解的语言,但可以随意标记其他编程语言。

1 个答案:

答案 0 :(得分:2)

以下是使用RSelenium实例化浏览器并指示其进行出价的解决方案。

library(RSelenium)
driver <- rsDriver()
remDr <- driver[["client"]]
remDr$navigate("http://aps.dac.gov.in/APY/Public_Report1.aspx") #navigate to your page

您基本上需要告诉浏览器选择要标记的每个按钮,使用SelectorGadget查找每个按钮的唯一ID,然后将它们逐个传递给webElem。然后使用webElem方法使页面做事。

webElem <- remDr$findElement(using = 'id', value = "TreeViewSeasonn0CheckBox")
webElem$highlightElement() #quick flash as a check we're in the right box
webElem$clickElement() #performs the click
#now do the same for each other box

webElem <- remDr$findElement(using = 'id', value = "TreeView1n0CheckBox") 
webElem$highlightElement()
webElem$clickElement()

webElem <- remDr$findElement(using = 'id', value = "TreeView2n0CheckBox") 
webElem$highlightElement()
webElem$clickElement()

webElem <- remDr$findElement(using = 'id', value = "TreeViewYearn0CheckBox")
webElem$highlightElement()
webElem$clickElement()

现在选择所需的报告表单,然后单击下载按钮。假设它是Excel格式。

webElem <- remDr$findElement(using = 'id', value = "DdlFormat")
webElem$sendKeysToElement(list("Excel", key = "enter"))
webElem <- remDr$findElement(using = 'id', value = "Button1")
webElem$clickElement() #does the click

对于它的价值,该网站试图为我下载所有数据时超时。您的结果可能会有所不同。