Yahoo Finance - Как получить компании Ключевые статистические данные - PullRequest
1 голос
/ 07 марта 2012

Я использовал codeproject для обмена данными с Yahoo (http://www.codeproject.com/Articles/37550/Stock-quote-and-chart-from-Yahoo-in-C).

В финансах Yahoo есть «Ключевые статистические данные», которые я хотел бы использовать, но они недоступны для этого (например, данные на http://uk.finance.yahoo.com/q/ks?s=BNZL.L). Есть ли способ получить эту информацию напрямую? Я действительно предпочел бы не скрести экран, если это возможно.

Я использую C # /. NET4.

Ответы [ 3 ]

4 голосов
/ 30 октября 2012

Я попал на этот вопрос во время поиска ответа пару дней назад, подумав о предоставлении ответа, который я создал в R (и поделился им с R-Bloggers).Я знаю, что ответ, который я предоставляю, не в C #, но XPath и XML поддерживаются на каждом языке, поэтому вы можете использовать этот подход там.URL-адрес блога - http://www.r -bloggers.com / pull-yahoo-finance-key-statistics-мгновенно с использованием xml-and-xpath-in-r /

#######################################################################
##Alternate method to download all key stats using XML and x_path - PREFERRED WAY
#######################################################################

setwd("C:/Users/i827456/Pictures/Blog/Oct-25")
require(XML)
require(plyr)
getKeyStats_xpath <- function(symbol) {
  yahoo.URL <- "http://finance.yahoo.com/q/ks?s="
  html_text <- htmlParse(paste(yahoo.URL, symbol, sep = ""), encoding="UTF-8")

  #search for <td> nodes anywhere that have class 'yfnc_tablehead1'
  nodes <- getNodeSet(html_text, "/*//td[@class='yfnc_tablehead1']")

  if(length(nodes) > 0 ) {
   measures <- sapply(nodes, xmlValue)

   #Clean up the column name
   measures <- gsub(" *[0-9]*:", "", gsub(" \\(.*?\\)[0-9]*:","", measures))   

   #Remove dups
   dups <- which(duplicated(measures))
   #print(dups) 
   for(i in 1:length(dups)) 
     measures[dups[i]] = paste(measures[dups[i]], i, sep=" ")

   #use siblings function to get value
   values <- sapply(nodes, function(x)  xmlValue(getSibling(x)))

   df <- data.frame(t(values))
   colnames(df) <- measures
   return(df)
  } else {
    break
  }
}

tickers <- c("AAPL")
stats <- ldply(tickers, getKeyStats_xpath)
rownames(stats) <- tickers
write.csv(t(stats), "FinancialStats_updated.csv",row.names=TRUE)  

#######################################################################
4 голосов
/ 07 марта 2012

Вы можете использовать мою библиотеку для .NET Yahoo!Управляемый .Там у вас есть класс MaasOne.Finance.YahooFinance.CompanyStatisticsDownload, чтобы делать именно то, что вы хотите.

p / s: вам нужно использовать последнюю версию (0.10.1).v0.10.0.2 устарел с загрузкой ключевой статистики.

1 голос
/ 30 октября 2016

Если вы не возражаете против использования ключевой статистики с BarChart.com, вот простой скрипт функции:

library(XML)

getKeyStats <- function(symbol) {
  barchart.URL <- "http://www.barchart.com/profile.php?sym="
  barchart.URL.Suffix <- "&view=key_statistics"
  html_table <- readHTMLTable(paste(barchart.URL, symbol, barchart.URL.Suffix, sep = ""))
  df_keystats = html_table[[5]]
  print(df_keystats)
 }
...