我正在努力抓this website。不幸的是,我想用rvest抓取的数据隐藏在一个按钮后面(加号)。
我尝试使用rvest包进行操作,并使用以下代码:
library(rvest)
url <- 'https://transparency.entsoe.eu/generation/r2/actualGenerationPerGenerationUnit/show?name=&defaultValue=true&viewType=TABLE&areaType=BZN&atch=false&dateTime.dateTime=17.03.2017+00:00|UTC|DAYTIMERANGE&dateTime.endDateTime=17.03.2017+00:00|UTC|DAYTIMERANGE&area.values=CTY|10YBE----------2!BZN|10YBE----------2&productionType.values=B02&productionType.values=B03&productionType.values=B04&productionType.values=B05&productionType.values=B06&productionType.values=B07&productionType.values=B08&productionType.values=B09&productionType.values=B10&productionType.values=B11&productionType.values=B12&productionType.values=B13&productionType.values=B14&productionType.values=B15&productionType.values=B16&productionType.values=B17&productionType.values=B18&productionType.values=B19&productionType.values=B20&dateTime.timezone=UTC&dateTime.timezone_input=UTC&dv-datatable_length=100'
htmlpage <- html_session(url) %>%
read_html() %>%
html_nodes(".dv-value-cell") %>>%
html_table()
&#34; .dv-value-cell&#34;是使用SelectorGadget从网站中提取的(在rvest的vignettes之一)。
但是,在我可以使用此代码之前,我仍然需要打开加号菜单。在单击按钮之前,此子表中的数据不存在。因此,上面的代码将返回一个空值。
我使用this question中描述的Chrome网络开发工具来监控点击按钮时会发生什么。根据该信息,我看到有以下网址的请求(缩写为仅突出显示与原始网址的差异):
https://transparency.entsoe.eu/...&dateTime.timezone_input=UTC&dv-datatable-detail_22WAMERCO000010Y_22WAMERCO000008L_length=10&dv-datatable_length=50&detailId=22WAMERCO000010Y_22WAMERCO000008L
正如您所看到的,这是原始网址,但还有一个小额外请求。但是,当我在浏览器中尝试此网址时,它并未显示所需的结果。我必须遗漏网站另外传递的内容。
根据Chrome提出的此请求的结果正是我正在寻找的数据(右键单击&gt;复制&gt;复制结果)。所以应该有一种方法来下载这些特定的数据。
我还发现了this question关于类似问题,但不幸的是,解决方案对于这种情况非常具体,并且错过了一般性解释。
如何重现此浏览器请求,以便我收到相同的表格?
答案 0 :(得分:1)
如果您没有废弃大量数据。我建议您使用selenium
。实际上你可以点击按钮。您可以从scrapping with R programming and selenium开始。
您也可以使用PhontomJS。它也像硒,但不需要浏览器。
我希望他们中的一个会有所帮助。