Как очистить ключевые статистические данные от Yahoo!Финансировать с R? - PullRequest
0 голосов
/ 30 декабря 2018

К сожалению, я еще не опытный скребок.Однако мне нужно собрать ключевую статистику по нескольким акциям из Yahoo Finance с помощью R.

. Я немного знаком с чисткой данных непосредственно из html с использованием read_html, html_nodes () и html_text () из пакета rvest.Тем не менее, эта статистика ключей веб-страницы MSFT немного сложна, я не уверен, что вся статистика хранится в XHR, JS или Doc.Я предполагаю, что данные хранятся в формате JSON.

Если кто-нибудь знает хороший способ извлечь и проанализировать данные для этой веб-страницы с помощью R, пожалуйста, ответьте на мой вопрос, большое спасибо заранее!

Или, если есть более удобный способ извлечьэти метрики с помощью QuantMod или Quandl, пожалуйста, дайте мне знать, это было бы очень хорошим решением!

Цель состоит в том, чтобы использовать тикеты / символы как имена строк / метки строк, тогда как статистика идентифицируется как столбцы.Иллюстрацию моих потребностей можно найти по этой ссылке Finviz:

https://finviz.com/screener.ashx

Причина, по которой я хотел бы проанализировать данные Yahoo Finance, заключается в том, что Yahoo также рассматривает корпоративную, EBITDA ключевую статистику.

РЕДАКТИРОВАТЬ: я имел в виду, чтобы ссылаться на страницу ключевой статистики .. Например ..: https://finance.yahoo.com/quote/MSFT/key-statistics/.Код должен приводить к одному фрейму данных строк биржевых символов и столбцам ключевых показателей.

Ответы [ 3 ]

0 голосов
/ 30 декабря 2018

вы можете использовать lapply для получения более чем одной цены

library(quantmod) 

Symbols<-c("XOM","MSFT","JNJ","GE","CVX","WFC","PG","JPM","VZ","PFE","T","IBM","MRK","BAC","DIS","ORCL","PM","INTC","SLB")

StartDate <- as.Date('2015-01-01')

Stocks <-  lapply(Symbols, function(sym) {
  Cl(na.omit(getSymbols(sym, from=StartDate, auto.assign=FALSE)))
})

Stocks <- do.call(merge, Stocks)

, в этом случае я получаю информацию о цене закрытия в функции Cl ()

0 голосов
/ 30 декабря 2018

Я надеюсь, что это то, что вы ищете:

library(quantmod)
library(plyr)

what_metrics <- yahooQF(c("Price/Sales", 
                          "P/E Ratio",
                          "Price/EPS Estimate Next Year",
                          "PEG Ratio",
                          "Dividend Yield", 
                          "Market Capitalization"))

Symbols<-c("XOM","MSFT","JNJ","GE","CVX","WFC","PG","JPM","VZ","PFE","T","IBM","MRK","BAC","DIS","ORCL","PM","INTC","SLB")


metrics <- getQuote(paste(Symbols, sep="", collapse=";"), what=what_metrics)

, чтобы получить список метрик

yahooQF()
0 голосов
/ 30 декабря 2018

Код

library(rvest)
library(tidyverse)

# Define stock name
stock <- "MSFT"

# Extract and transform data
df <- paste0("https://finance.yahoo.com/quote/", stock, "/financials?p=", stock) %>% 
    read_html() %>% 
    html_table() %>% 
    map_df(bind_cols) %>% 
    # Transpose
    t() %>%
    as_tibble()

# Set first row as column names
colnames(df) <- df[1,]
# Remove first row
df <- df[-1,]
# Add stock name column
df$Stock_Name <- stock

Результат

  Revenue `Total Revenue` `Cost of Revenu… `Gross Profit`
  <chr>   <chr>           <chr>            <chr>         
1 6/30/2… 110,360,000     38,353,000       72,007,000    
2 6/30/2… 96,571,000      33,850,000       62,721,000    
3 6/30/2… 91,154,000      32,780,000       58,374,000    
4 6/30/2… 93,580,000      33,038,000       60,542,000    
# ... with 25 more variables: ...

изменить:
Или, для удобства, в качестве функции:

get_yahoo <- function(stock){
  # Extract and transform data
  x <- paste0("https://finance.yahoo.com/quote/", stock, "/financials?p=", stock) %>% 
    read_html() %>% 
    html_table() %>% 
    map_df(bind_cols) %>% 
    # Transpose
    t() %>%
    as_tibble()

  # Set first row as column names
  colnames(x) <- x[1,]
  # Remove first row
  x <- x[-1,]
  # Add stock name column
  x$Stock_Name <- stock

  return(x)
}

Использование: get_yahoo(stock)

...