需要一个 API 来查找给定股票代码的完整公司名称 [关闭]
Posted
技术标签:
【中文标题】需要一个 API 来查找给定股票代码的完整公司名称 [关闭]【英文标题】:Need an API to find a full company name given a ticker symbol [closed] 【发布时间】:2011-03-13 13:26:51 【问题描述】:我需要在客户端 javascript 中找到一个完整公司名称,并给出股票代码。我知道 Yahoo Finance 的界面位于:
http://finance.yahoo.com/d/quotes.csv?s=TKR&f=n
并且能够通过 YQL 访问它(因为这是跨域的)。但是,这不会返回完整的公司名称,但雅虎财经却有这样的名称,因为它出现在公司的图表和有关公司的页面上。
我不需要通过 Yahoo Finance 提供解决方案...只需在此处提及它,因为我已经知道它(并且正在访问它以获取其他数据)。
【问题讨论】:
这里似乎有人问过这个问题:***.com/questions/885456/… 那个帖子是关于寻找公司名称的代码。我想朝另一个方向发展:获取 full 名称,并给出一个股票代码。 【参考方案1】:其中一个社区提供的 YQL 表看起来很适合您:yahoo.finance.stocks。
YQL 查询示例:
select CompanyName from yahoo.finance.stocks where symbol="TKR"
2012-02-10 更新: 正如 firebush 在 cmets 中指出的那样,这个 YQL 社区表 (yahoo.finance.stocks) 似乎不再正常工作,可能是因为Finance.yahoo.com 上的 html 页面结构已更改。这是一个很好的例子,说明了任何依赖 HTML 抓取而不是真正的 API 的 YQL 表的缺点。 (不幸的是,雅虎财经不存在。)
Google 财经的社区表似乎仍在工作,因此可以尝试以下替代方法:select * from google.igoogle.stock where stock='TRK';
【讨论】:
不错。感谢您提供 YQL 控制台的链接!!使用 YQL 抓取网页有点间接,但它确实有效。 这真是令人印象深刻。谢谢! 当我点击您的链接并点击“TEST”时,CompanyName 字段始终为空 - 我也尝试过其他股票。如果我将选择更改为“*”,则会出现其他字段(如开始日期),但名称仍然为空。 :( 我想知道这是否曾经有效但现在不受支持? @firebush 感谢您发现这一点 - 我已经用似乎仍在工作的 Google 替代方案更新了我的答案。 此时,您的 Google 结果示例不再有效。【参考方案2】:我过去曾使用 Yahoo Finance 或 MSN Money 筛选过此信息。例如,您可以通过访问 (link) 获取有关埃克森美孚的信息。至于 API,您可能需要自己构建一个。对于 API 结帐Xignite。
【讨论】:
【参考方案3】:您可以在此处使用公司基础 API 中的“公司搜索”操作:http://www.mergent.com/servius/
【讨论】:
这个链接现在好像失效了【参考方案4】:您可以使用 Jonathan Christian 的 .NET api 使用 Yahoo 的查找服务,该 API 可在 NuGet 上的“Yahoo Stock Quotes”下找到。
https://github.com/jchristian/yahoo_stock_quotes
//Create the quote service
var quote_service = new QuoteService();
//Get a quote
var quotes = quote_service.Quote("MSFT", "GOOG").Return(QuoteReturnParameter.Symbol,
QuoteReturnParameter.Name,
QuoteReturnParameter.LatestTradePrice,
QuoteReturnParameter.LatestTradeTime);
//Get info from the quotes
foreach (var quote in quotes)
Console.WriteLine("0 - 1 - 2 - 3", quote.Symbol, quote.Name, quote.LatestTradePrice, quote.LatestTradeTime);
编辑:发布后我尝试了这个确切的代码,但它对我不起作用,所以我使用了Yahoo Finance Managed Api,但它不能通过 NuGet 获得。一个很好的使用例子here
QuotesDownload dl = new QuotesDownload();
DownloadClient<QuotesResult> baseDl = dl;
QuotesDownloadSettings settings = dl.Settings;
settings.IDs = new string[] "MSFT", "GOOG", "YHOO" ;
settings.Properties = new QuoteProperty[] QuoteProperty.Symbol,
QuoteProperty.Name,
QuoteProperty.LastTradePriceOnly
;
SettingsBase baseSettings = baseDl.Settings;
Response<QuotesResult> resp = baseDl.Download();
另外,如果你只是想下载东西,stocktwits api 在“资源”下有符号和行业的下载链接http://stocktwits.com/developers/docs
【讨论】:
【参考方案5】:也可以使用 Quandl.com 资源。他们的 WIKI 数据库包含 3339 只主要股票,可以通过secwiki_tickers.csv 文件获取。对于存储您的代码列表(美国市场的股票)的普通文件 portfolio.lst,例如:
AAPL
IBM
JNJ
MSFT
TXN
您可以扫描 .csv 文件以获取名称,例如:
import pandas as pd
df = pd.read_csv('secwiki_tickers.csv')
dp = pd.read_csv('portfolio.lst',names=['pTicker'])
pTickers = dp.pTicker.values # converts into a list
tmpTickers = []
for i in range(len(pTickers)):
test = df[df.Ticker==pTickers[i]]
if not (test.empty):
print("%-10s%s" % (pTickers[i], list(test.Name.values)[0]))
什么返回:
AAPL Apple Inc.
IBM International Business Machines Corporation
JNJ Johnson & Johnson
MSFT Microsoft Corporation
TXN Texas Instruments Inc.
可以从 Quandl 的其他资源中合并更多库存。请参阅在线文档。
【讨论】:
以上是关于需要一个 API 来查找给定股票代码的完整公司名称 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章