Scrape需要点击按钮的网站

时间:2017-03-23 18:01:43

标签: r web-scraping rvest

我正在努力抓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关于类似问题,但不幸的是,解决方案对于这种情况非常具体,并且错过了一般性解释。

如何重现此浏览器请求,以便我收到相同的表格?

1 个答案:

答案 0 :(得分:1)

如果您没有废弃大量数据。我建议您使用selenium。实际上你可以点击按钮。您可以从scrapping with R programming and selenium开始。

您也可以使用PhontomJS。它也像硒,但不需要浏览器。 我希望他们中的一个会有所帮助。