На странице есть ссылка на загружаемый CSV. Вы можете указать компанию и период времени et c в R. перед его загрузкой.
Единственная проблема заключается в том, что в URL-адресе должен быть указан параметр "crumbs", который фактически является идентификатором сеанса, и вам нужно собрать это со страницы, чтобы создать URL.
Я написал функцию для всего этого. Все, что вам нужно сделать, это указать название компании, и оно предоставит вам все финансовые отчеты за последние 15 лет или около того в виде фрейма данных.
get_financial_data <- function(company)
{
tmp <- tempfile()
yahoo <- httr::handle('https://finance.yahoo.com/quote/')
'https://finance.yahoo.com/quote/' %>%
paste0(company) %>%
paste0('/history?p=') %>%
paste0(company) %>%
httr::GET(handle = yahoo) %>%
httr::content("text") -> raw_html
strsplit(raw_html, "crumb\":\"") %>%
unlist %>%
strsplit("\"") %>%
lapply(`[`, 1) %>%
unlist %>%
table %>%
sort %>%
rev %>%
names %>%
`[`(2) %>%
paste0("https://query1.finance.yahoo.com/v7/finance/download/", company,
"?period1=1079873500&period2=1579873500&interval=1d&events=history&crumb=", .) %>%
httr::GET(handle = yahoo) %>%
httr::content("text", encoding = "UTF-8") %>%
writeBin(tmp, useBytes = T)
suppressWarnings(read.csv(tmp) %>% tibble::as_tibble())
}
Теперь вы можете просто сделать:
get_financial_data("SAP")
#> # A tibble: 3,988 x 7
#> Date Open High Low Close Adj.Close Volume
#> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
#> 1 2004-03-22 37.4 37.5 36.7 37.3 29.3 1717600
#> 2 2004-03-23 37.8 37.9 37.4 37.5 29.5 1417500
#> 3 2004-03-24 37.4 38.1 37.2 37.5 29.5 1682500
#> 4 2004-03-25 37.9 38.9 37.9 38.8 30.4 2233800
#> 5 2004-03-26 37.9 38.2 37.5 37.9 29.8 3343500
#> 6 2004-03-29 38.6 39.3 38.6 38.8 30.5 1886800
#> 7 2004-03-30 38.8 39.3 38.8 39.1 30.7 997900
#> 8 2004-03-31 39.5 39.8 39.3 39.3 30.9 1818600
#> 9 2004-04-01 39.8 40.6 39.8 40.6 31.9 2570600
#> 10 2004-04-02 40.9 41.3 40.6 41.1 32.3 1708200
#> # ... with 3,978 more rows