2012-03-06 6 views
1

J'ai utilisé codeproject pour obtenir des données de partage de yahoo (http://www.codeproject.com/Articles/37550/Stock-quote-and-chart-from-Yahoo-in-C).Yahoo Finance - Comment obtenir des entreprises Statistiques clés

Dans yahoo finance, il y a des «statistiques clés» que je voudrais utiliser, mais qui ne sont pas disponibles par ce moyen (par exemple les données au http://uk.finance.yahoo.com/q/ks?s=BNZL.L). Y a-t-il un moyen d'obtenir cette information directement? Je préfèrerais vraiment ne pas filtrer l'éraflure si possible.

J'utilise C# /. NET4.

Répondre

4

Vous pouvez utiliser ma bibliothèque pour .NET Yahoo! Managed. Là, vous avez la classe MaasOne.Finance.YahooFinance.CompanyStatisticsDownload pour faire exactement ce que vous voulez.

p/s: Vous devez utiliser la dernière version (0.10.1). v0.10.0.2 est obsolète avec le téléchargement des statistiques clés.

+0

C'est un vrai petit bijou d'un répondre. Je vous remercie! J'avais essayé l'ancienne version de Yahoo! Géré (de CodeProject - [link] (http://www.codeproject.com/Articles/42575/Yahoo-Finance-Managed)), dans lequel toutes les réponses dans l'application de test sortent comme zéro ou N/A. Le lien que vous avez donné fonctionne parfaitement. Désolé de vous déranger à nouveau, mais savez-vous si les méthodes doivent souvent être améliorées? Pas de soucis si vous êtes occupé. Je suis vraiment ravi de pouvoir accéder à l'information pour le moment. – HockeyJ

+0

Pas très souvent. Ces données statisitques ne font pas partie de l'API CSV officielle de Yahoo. Au lieu de cela, la lib analyse la page normale de yahoo (via YQL, donc les données de fin proviennent de l'API officielle ^^, ce qui est important car la licence). Ainsi, chaque fois que Yahoo change son site (les parties de la table), la lib nécessite une mise à jour. greetz – Maas

+1

Cool. Merci pour l'info. Je vais faire un don au projet quand j'ai été payé, car c'est vraiment bon! – HockeyJ

4

J'ai atterri sur cette question en cherchant une réponse il y a quelques jours, pensé à fournir une réponse que j'ai créée en R (et l'ai partagé sur R-Bloggers). Je sais que la réponse que je fournis n'est pas en C# mais XPath et XML sont supportés dans toutes les langues pour que vous puissiez utiliser cette approche là. L'URL du blog est - http://www.r-bloggers.com/pull-yahoo-finance-key-statistics-instantaneously-using-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) 

####################################################################### 
+0

C'est le grattage de l'écran, c'est lent et consomme plus de données –

1

Si vous ne me dérange pas en utilisant les statistiques clés de BarChart.com, voici un script simple fonction:

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) 
} 
+0

Ce site ne semble pas avoir des actions à la Bourse de Londres, mais semble avoir des informations pertinentes sur les actions américaines. Merci. – HockeyJ

Questions connexes