我无休止地在谷歌上寻找一种通过http://finance.yahoo.com获取所有(每日更新)所有Yahoo股票代码的列表的方法
雅虎拥有有关全球许多交易所的股票,期货等信息,我希望通过它们获得所有股票代码的综合清单。我尝试过YQL,但是它们具有“ where symbol =(或in)”子句限制,因此我无法从符号中选择*。
因此,基本上,一次获得一个或多个符号的详细信息很容易,但我似乎无法找出如何获取所有可用行情自动收录器的列表。
有人可以帮忙吗?
我无休止地在谷歌上寻找一种通过http://finance.yahoo.com获取所有(每日更新)所有Yahoo股票代码的列表的方法
雅虎拥有有关全球许多交易所的股票,期货等信息,我希望通过它们获得所有股票代码的综合清单。我尝试过YQL,但是它们具有“ where symbol =(或in)”子句限制,因此我无法从符号中选择*。
因此,基本上,一次获得一个或多个符号的详细信息很容易,但我似乎无法找出如何获取所有可用行情自动收录器的列表。
有人可以帮忙吗?
Answers:
http://code.google.com/p/yahoo-finance-managed/上有一个Yahoo.Finance API的不错的C#包装器,它将带您到达那里。不幸的是,没有直接的方法可以下载股票行情列表,但是下面的代码通过迭代字母顺序的组来创建该列表:
AlphabeticIDIndexDownload dl1 = new AlphabeticIDIndexDownload();
dl1.Settings.TopIndex = null;
Response<AlphabeticIDIndexResult> resp1 = dl1.Download();
writeStream.WriteLine("Id|Isin|Name|Exchange|Type|Industry");
foreach (var alphabeticalIndex in resp1.Result.Items)
{
AlphabeticalTopIndex topIndex = (AlphabeticalTopIndex) alphabeticalIndex;
dl1.Settings.TopIndex = topIndex;
Response<AlphabeticIDIndexResult> resp2 = dl1.Download();
foreach (var index in resp2.Result.Items)
{
IDSearchDownload dl2 = new IDSearchDownload();
Response<IDSearchResult> resp3 = dl2.Download(index);
int i = 0;
foreach (var item in resp3.Result.Items)
{
writeStream.WriteLine(item.ID + "|" + item.ISIN + "|" + item.Name + "|" + item.Exchange + "|" + item.Type + "|" + item.Industry);
}
}
}
它在大约4分钟内给了我大约75,000种证券的清单。
我有一个类似的问题。yahoo不提供它,但是您可以通过浏览nyse.com列表上的document.write语句并找到.js文件(恰好它们存储以给定字母开头的公司列表作为js数组的位置)的.js文件来获得它。文字。您还可以从nasdaq.com上获得整洁的csv文件:http : //www.nasdaq.com/screening/companies-by-name.aspx? letter =0&exchange=nasdaq& render = download (用exchange = nyse 替换exchange = nasdaq对于nyse符号)。
我设法通过使用以下URL做类似的事情:
http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance .sectors)&env = store%3A%2F%2Fdatatables.org%2Falltableswithkeys
它使用Yahoo YQL API下载股票代码的完整列表,包括股票名称,股票代码和行业ID。它似乎没有的是任何一种股票代码修饰符。例如,对于Rogers Communications Inc,它仅下载RCI,而不下载RCI-A.TO,RCI-B.TO等。我还没有找到该信息的来源-如果有人知道自动下载该信息的方法,我想听听。另外,最好找到一种下载股票代码和它所交易的交易所之间的某种关系的方法,因为一些交易是在多个交易所进行的,或者也许我只想看一下TSX上的东西。
纳斯达克股票列表 ftp://ftp.nasdaqtrader.com/symboldirectory
这两个文件nasdaqlisted.txt和otherlisted.txt是| 管分隔。那应该给您所有股票的好清单。
我可能能够为(美国和非美国)股票以及ETF提供股票代码的列表帮助。
雅虎提供了一个“收入日历”,其中列出了宣布某一天的收入的所有股票。这包括非美国股票。
例如,今天是今天:http : //biz.yahoo.com/research/earncal/20120710.html
网址的最后一部分是您想要收入日历的日期(采用YYYYMMDD格式)。您可以浏览几天,然后刮擦那些当日报告收益的所有股票的交易品种。
不能保证雅虎拥有所有报告收益的股票的数据,特别是由于某些股票不再存在(破产,收购等),因此,这可能是一个不错的起点。
如果您熟悉R
,则可以使用
qmao软件包来执行此操作。(请参阅此帖子)如果您在安装时遇到问题。
ec <- getEarningsCalendar(from="2011-01-01", to="2012-07-01") #this may take a while
s <- unique(ec$Symbol)
length(s)
#[1] 12223
head(s, 20) #look at the first 20 Symbols
# [1] "CVGW" "ANGO" "CAMP" "LNDC" "MOS" "NEOG" "SONC"
# [8] "TISI" "SHLM" "FDO" "FC" "JPST.PK" "RECN" "RELL"
#[15] "RT" "UNF" "WOR" "WSCI" "ZEP" "AEHR"
这将不包括任何ETF,期货,期权,债券,外汇或共同基金。
您可以从以下网站从yahoo获取ETF列表:http : //finance.yahoo.com/etf/browser/mkt 仅显示前20个。您需要该页面底部的“显示全部”链接的URL。 。您可以抓取该页面以找出有多少ETF,然后构造一个URL。
L <- readLines("http://finance.yahoo.com/etf/browser/mkt")
# Sorry for the ugly regex
n <- gsub("^(\\w+)\\s?(.*)$", "\\1",
gsub("(.*)(Showing 1 - 20 of )(.*)", "\\3",
L[grep("Showing 1 - 20", L)]))
URL <- paste0("http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=", n)
#http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=1442
现在,您可以从该页面上的表格中提取股票行情
library(XML)
tbl <- readHTMLTable(URL, stringsAsFactors=FALSE)
dat <- tbl[[tail(grep("Ticker", tbl), 1)]][-1, ]
colnames(dat) <- dat[1, ]
dat <- dat[-1, ]
etfs <- dat$Ticker # All ETF tickers from yahoo
length(etfs)
#[1] 1442
head(etfs)
#[1] "DGAZ" "TAGS" "GASX" "KOLD" "DWTI" "RTSA"
那就是我所能提供的全部帮助,但是您可以通过抓取这些页面来做一些类似的事情来获得他们所提供的一些期货(这些只是美国期货)
http://finance.yahoo.com/indices?e=futures, http://finance.yahoo.com/futures?t=energy, http://finance.yahoo.com/futures?t=metals, HTTP: //finance.yahoo.com/futures?t=grains, http://finance.yahoo.com/futures?t=livestock, http://finance.yahoo.com/futures?t=softs, HTTP:// finance.yahoo.com/futures?t=indices,
而且,对于美国和非美国指数,您可以抓取这些页面
http://finance.yahoo.com/intlindices?e=americas, http://finance.yahoo.com/intlindices?e=asia, http://finance.yahoo.com/intlindices?e=europe, HTTP: //finance.yahoo.com/intlindices?e=africa, http://finance.yahoo.com/indices?e=dow_jones, http://finance.yahoo.com/indices?e=new_york, HTTP:// finance.yahoo.com/indices?e=nasdaq, http://finance.yahoo.com/indices?e=sp, http://finance.yahoo.com/indices?e=other, HTTP://融资。 yahoo.com/indices?e=treasury, http://finance.yahoo.com/indices?e=commodities
我一直在研究这几天,追寻着无数的线索,这些线索与我所追求的相近,但并不完全相同。
我需要一个简单的“符号,行业,行业”列表。我正在使用Java,并且不想使用任何平台本机代码。
似乎大多数其他数据(如引号等)都可以随时获得。
最后,跟随一个建议去看看“ finviz.com”。看起来就像票。尝试使用以下内容:
http://finviz.com/export.ashx?v=111&t=aapl,cat&o=ticker 这是csv样式的行,带有标题行,按代码符号排序。您可以继续添加股票行情。在代码中,您可以读取流。或者,您可以让浏览器询问您是否打开或保存文件。
http://finviz.com/export.ashx?v=111&&o=ticker具有 相同的csv样式,但是提取了所有可用的符号(很多,遍及全球交易所)
将“导出”替换为“筛选器”,数据将显示在浏览器中。
您可以使用更多选项,该选项适用于网站上的每个筛选器元素。
到目前为止,这是获取我以前无法轻易获得的少量数据的最强大,最方便的编程方式。而且,看起来该网站很可能是您除了实时报价或近实时报价以外的大多数其他需求的唯一来源。
雅虎符号/股票/股票的完整列表可从以下网站下载(excel格式)。http://www.myinvestorshub.com/yahoo_stock_list.php
列表更新至2016年1月:http: //investexcel.net/all-yahoo-finance-stock-tickers/
我有同样的问题,但我想我有一个简单的解决方案(代码来自我的RoR应用程序):从yahoo.finance.sectors中提取行业ID并将其添加到db中:
select = "select * from yahoo.finance.sectors"
generate_query select
@data.each do |data|
data["industry"].each do |ind|
unless ind.kind_of?(Array)
unless ind["id"].nil?
id = ind["id"].to_i
if id > 0
Industry.where(id: id).first_or_create(name: ind["name"]).update_attribute(:name, ind["name"])
end
end
end
end
end
提取所有带有其行业ID的符号的符号:
ids = Industry.all.map{|ind| "'#{ind.id.to_s}'" }.join(",")
select = "select * from yahoo.finance.industry where id in"
generate_query select, ids
@data.each do |ts|
unless ts.kind_of?(Array) || ts["company"].nil?
if ts["company"].count == 2 && ts["company"].first[0] == "name"
t = ts["company"]
Ticket.find_or_create_by_symbol(symbol: t["symbol"], name: t["name"] ).update_attribute(:name, t["name"])
else
ts["company"].each do |t|
Ticket.find_or_create_by_symbol(symbol: t["symbol"], name: t["name"] ).update_attribute(:name, t["name"])
end
end
end
end
end
连接方式:
def generate_query(select, ids = nil)
if params[:form] || params[:action] == "sectors" || params[:controller] == "tickets"
if params[:action] == "sectors" || params[:controller] == "tickets"
if ids.nil?
query= select
else
query= "#{select} (#{ids})"
end
else
if params[:form][:ids]
@conditions = params_parse params[:form][:ids]
query = "#{select} (#{@conditions})"
end
end
yql_execut(query)
end
end
def yql_execut(query)
# TODO: OAuth ACCESS (http://developer.yahoo.com/yql/guide/authorization.html)
base_url = "http://query.yahooapis.com/v1/public/yql?&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&q="
dirty_data = JSON.parse(HTTParty.get(base_url + URI.encode(query)).body)
if dirty_data["query"]["results"] == nil
@data, @count, @table_head = nil
else
@data = dirty_data["query"]["results"].to_a[0][1].to_a
@count = dirty_data["query"]["count"]
if @count == 1
@table_head = @data.map{|h| h[0].capitalize}
else
@table_head = @data.to_a.first.to_a.map{|h| h[0].capitalize}
end
end
end
很抱歉,这是我的项目的第一个测试版本,我非常快地需要它。我的应用程序有一些辅助变量和其他内容,对此感到抱歉。但是我有一个问题:您有很多符号吗?我有5500。