【发布时间】:2017-08-16 10:56:58
【问题描述】:
我正在尝试抓取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()
“.dv-value-cell”是使用 SelectorGadget 从网站中提取的(在 rvest 的 vignettes 之一中)。
但是,在我可以使用此代码之前,我仍然需要打开加号菜单。在单击按钮之前,该子表中的数据不存在。因此,上面的代码会返回一个空值。
我使用了this question 中描述的 Chrome 网络开发工具来监控单击按钮时发生的情况。根据该信息,我看到对以下 url 的请求(缩短以仅突出显示与原始 url 的差异):
https://transparency.entsoe.eu/...&dateTime.timezone_input=UTC&dv-datatable-detail_22WAMERCO000010Y_22WAMERCO000008L_length=10&dv-datatable_length=50&detailId=22WAMERCO000010Y_22WAMERCO000008L
如您所见,这是原始 url,但有一个小的附加请求。但是,当我在浏览器中尝试此 url 时,它没有显示所需的结果。我一定错过了网站另外传递的东西。
根据 Chrome 的这个请求的结果正是我正在寻找的数据(右键单击 > 复制 > 复制结果)。所以应该有办法只下载这些特定的数据。
我还发现this question 有类似的问题,但不幸的是,该解决方案针对这种情况非常具体,并且缺少一般解释。
如何重现此浏览器请求以便收到同一张表?
【问题讨论】:
标签: r web-scraping rvest