【问题标题】:Scrape website that requires button click抓取需要点击按钮的网站
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 2015-01-05
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多