2017-01-07 6 views
2

私はこのウェブページからデータを取得しようとしています:http://www.finanzen.net/zertifikate/emittent/UBS/DERI(アクセスしようとしている全履歴を見るには "Komplett"をクリックしてください)。インタラクティブチャートからデータを抽出する方法は?

問題は、ソースコードでは見つからないが、対話形式で作成されているように見えるということです。

機械可読形式でデータにアクセスするにはどうすればよいですか?

答えて

2
library(seleniumPipes) 
library(tidyverse) 

# you need to figure out how to get selenium running and find the port 

dr <- remoteDr("http://localhost", browserName="firefox", port="32772") 

dr %>% go("http://www.finanzen.net/zertifikate/emittent/UBS/DERI") 

# you will need to find a way to expand the slider range 

keys <- dr %>% executeScript("return Object.keys(window.hschart1.series[0].data);") 
keys <- unlist(keys) 

# you have to iterate through the data array and return the individual key values 
# since either Selenium or R can't convert the complex structure to a return value 

map_df(keys, function(k) { 

    x <- dr %>% executeScript(sprintf("return window.hschart1.series[0].data[%s].x;", k)) 
    y <- dr %>% executeScript(sprintf("return window.hschart1.series[0].data[%s].y;", k)) 

    data_frame(x=anytime::anytime(x/1000), y=y) 

}) -> df 

df 

## # A tibble: 213 × 2 
##      x  y 
##     <dttm> <dbl> 
## 1 2016-02-11 19:00:00 -1.791 
## 2 2016-02-14 19:00:00 -1.684 
## 3 2016-02-15 19:00:00 -1.586 
## 4 2016-02-16 19:00:00 -1.344 
## 5 2016-02-17 19:00:00 -1.392 
## 6 2016-02-18 19:00:00 -1.327 
## 7 2016-02-21 19:00:00 -1.129 
## 8 2016-02-22 19:00:00 -1.271 
## 9 2016-02-23 19:00:00 -1.315 
## 10 2016-02-24 19:00:00 -1.218 
## # ... with 203 more rows 
+0

私はあなたにスタートを与えましたが、これは醜いものです。他の誰かがあなたのためにこれを拡張することを願っています。私はそれを正当化できるほど多くの時間をabtに費やしました。 – hrbrmstr

+0

フェア、十分にありがとう、あなたの答えを受け入れました – vonjd

関連する問題