2016-10-25 15 views
1

Есть ли у кого-либо опыт в очистке данных от Yahoo! Финансовая ключевая страница статистики с R? Я знаком с соскабливанием данных непосредственно из html с использованием read_html, html_nodes() и html_text() от rvest. Однако эта веб-страница MSFT key stats немного сложна, я не уверен, что все статистические данные хранятся в XHR, JS или Doc. Я предполагаю, что данные хранятся в JSON. Если кто-то знает хороший способ извлечь и проанализировать данные для этой веб-страницы с R, любезно ответьте на мой вопрос, большое спасибо заранее!Веб-скрещивание ключевых характеристик в Yahoo! Финансы с R

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

+0

В качестве альтернативы, вы можете посмотреть в 'getFinancials()' и 'viewFinancials()' 'методы в quantmod' Он использует данные от Google финансов, хотя и другие параметры ГКЗ не реализованы до сих пор. –

+0

С 'docl = htmlParse ('http://finance.yahoo.com/quote/MSFT/key-statistics?p=MSFT')' вы могли бы видеть раздел '(function (root) { /* - Данные - */'где, по-видимому, есть данные. Например,« бета »: {« raw »: 1.39107,« fmt »:« 1.39 »}', goo luck! – Robert

+1

Спасибо @Robert, я также нашел еще один документ в XHR [Y! Finanace Stats] (https://query2.finance.yahoo.com/v10/finance/quoteSummary/MSFT?formatted=true&crumb=loFaprfreJS&lang=en-US®ion=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com), который хранит чистый JSON для показателей! Большое спасибо, поделится скриптом синтаксического анализа позже. – tonykuoyj

ответ

3

Я давно отказался от Excel. R - это определенно способ пойти на такие вещи.

library(XML) 

stocks <- c("AXP","BA","CAT","CSCO") 

for (s in stocks) { 
     url <- paste0("http://finviz.com/quote.ashx?t=", s) 
     webpage <- readLines(url) 
     html <- htmlTreeParse(webpage, useInternalNodes = TRUE, asText = TRUE) 
     tableNodes <- getNodeSet(html, "//table") 

     # ASSIGN TO STOCK NAMED DFS 
     assign(s, readHTMLTable(tableNodes[[9]], 
       header= c("data1", "data2", "data3", "data4", "data5", "data6", 
          "data7", "data8", "data9", "data10", "data11", "data12"))) 

     # ADD COLUMN TO IDENTIFY STOCK 
     df <- get(s) 
     df['stock'] <- s 
     assign(s, df) 
} 

# COMBINE ALL STOCK DATA 
stockdatalist <- cbind(mget(stocks)) 
stockdata <- do.call(rbind, stockdatalist) 
# MOVE STOCK ID TO FIRST COLUMN 
stockdata <- stockdata[, c(ncol(stockdata), 1:ncol(stockdata)-1)] 

# SAVE TO CSV 
write.table(stockdata, "C:/Users/your_path_here/Desktop/MyData.csv", sep=",", 
      row.names=FALSE, col.names=FALSE) 

# REMOVE TEMP OBJECTS 
rm(df, stockdatalist) 
+0

Отлично, я также хотел бы очистить от Finviz. Спасибо, что предложили альтернативу Y! Финансы. – tonykuoyj

 Смежные вопросы

  • Нет связанных вопросов^_^