【问题标题】:Yahoo Finance - How to get companies Key Statistics雅虎财经 - 如何获得公司关键统计数据
【发布时间】:2016-10-30 10:44:58
【问题描述】:

我使用 codeproject 从 yahoo 获取共享数据 (http://www.codeproject.com/Articles/37550/Stock-quote-and-chart-from-Yahoo-in-C)。

在 yahoo Finance 中,有我想使用的“关键统计数据”,但无法通过这种方式获得(例如 http://uk.finance.yahoo.com/q/ks?s=BNZL.L 的数据)。有没有办法直接获取这些信息?如果可能的话,我真的宁愿不要屏幕刮擦。

我正在使用 C#/.NET4。

【问题讨论】:

    标签: yahoo-finance


    【解决方案1】:

    您可以将我的 lib 用于 .NET Yahoo! Managed。那里有 MaasOne.Finance.YahooFinance.CompanyStatisticsDownload 类来做你想做的事。

    p/s:您需要使用最新版本(0.10.1)。 v0.10.0.2 已弃用关键统计信息下载。

    【讨论】:

    • 这是一个绝对的 GEM 答案。谢谢!我曾尝试过旧版本的 Yahoo!托管(来自 CodeProject - link),其中测试应用程序中的所有答案都是零或 N/A。您提供的链接完美运行。很抱歉再次打扰您,但是您知道这些方法是否经常需要颠倒过来吗?如果您很忙,请不要担心。我很高兴现在能够获得这些信息。
    • 不经常。这些统计数据不是雅虎官方 CSV-API 的一部分。相反,lib 解析正常的 yahoo 页面(通过 YQL;所以最终数据来自官方 API ^^;这很重要,因为许可)。因此,每次 yahoo 更改其站点(表格部分)时,lib 都需要更新。打招呼
    • 酷。谢谢(你的)信息。当我得到报酬时,我会捐赠给这个项目,因为它真的很棒!
    • 刚刚捐赠。抱歉,数量不多。如果我开始赚钱,我会按照你的方式发送更多。
    【解决方案2】:

    几天前我在寻找答案时遇到了这个问题,想提供一个我在 R 中创建的答案(并在 R-Bloggers 上分享)。我知道我提供的答案不在 C# 中,但每种语言都支持 XPath 和 XML,因此您可以在那里使用这种方法。博客的 URL 是 - 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)  
    
    #######################################################################
    

    【讨论】:

    • 即屏幕抓取,速度慢,耗流量大
    【解决方案3】:

    如果您不介意使用 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)
     }
    

    【讨论】:

    • 这个网站似乎没有伦敦证券交易所的股票,但肯定有一些美国股票的相关信息。谢谢。
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2015-06-11
    相关资源
    最近更新 更多