某种免费的 REST API 是理想的,但一般来说,是否有任何免费的 API 或 Web 服务或 CSV 文件(不在密码提示后面)或任何可以查询以获取当前标准普尔 500 指数列表的东西成分?
我通过 Yahoo Finance 的 API 和 Markit on demand ( http://dev.markitondemand.com/ ) 查看了 S&P 的网站本身 ( http://www.standardandpoors.com ) ,但没有找到任何东西然而。
某种免费的 REST API 是理想的,但一般来说,是否有任何免费的 API 或 Web 服务或 CSV 文件(不在密码提示后面)或任何可以查询以获取当前标准普尔 500 指数列表的东西成分?
我通过 Yahoo Finance 的 API 和 Markit on demand ( http://dev.markitondemand.com/ ) 查看了 S&P 的网站本身 ( http://www.standardandpoors.com ) ,但没有找到任何东西然而。
也有类似的需求。您可以使用 Wikipedia API 或解析 html 来获取标准普尔 500 指数中的符号列表 http://en.wikipedia.org/wiki/List_of_S%26P_500_companies
您现在可以通过以下方式安装和使用模块
pip install finsymbols
我目前通过维基百科获得符号列表。它不是休息,但可以很容易地做成一个休息 API。它是用python编写的
>>import sys
>>sys.path.append('/home/skillachie/Desktop/')
>>import finsymbols
sp500 = finsymbols.get_sp500_symbols()
pprint.pprint(sp500)
{'company': u'Xcel Energy Inc',
'headquaters': u'Minneapolis, Minnesota',
'industry': u'Multi-Utilities & Unregulated Power',
'sector': u'Utilities',
'symbol': u'XEL'},
{'company': u'Xerox Corp.',
'headquaters': u'Norwalk, Connecticut',
'industry': u'IT Consulting & Services',
'sector': u'Information Technology',
'symbol': u'XRX'},
{'company': u'Xilinx Inc',
'headquaters': u'San Jose, California',
'industry': u'Semiconductors',
'sector': u'Information Technology',
'symbol': u'XLNX'},
{'company': u'XL Capital',
'headquaters': u'Hamilton, Bermuda',
'industry': u'Property & Casualty Insurance',
'sector': u'Financials',
'symbol': u'XL'},
如果有兴趣,您可以在此处获取更多信息http://skillachie.github.io/finsymbols/
使用 python,你可以试试我刚刚写的这个代码片段(有点难看,但可以)。(它实际上返回 502 个代码。这是正确的)
from urllib import request
from bs4 import BeautifulSoup
import datetime
import dateutil.relativedelta as dr
import pandas as pd
def get_constituents():
# URL request, URL opener, read content
req = request.Request('http://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
opener = request.urlopen(req)
content = opener.read().decode() # Convert bytes to UTF-8
soup = BeautifulSoup(content)
tables = soup.find_all('table') # HTML table we actually need is tables[0]
external_class = tables[0].findAll('a', {'class':'external text'})
tickers = []
for ext in external_class:
if not 'reports' in ext:
tickers.append(ext.string)
return tickers
我发现http://finviz.com/export.ashx?v=152&f=idx_sp500&ft=1&ta=1&p=d&r=1&c=1
:-)
但我还没有找到 Finviz API 文档。
:-(
Bloomberg 似乎有一个开放的 api。如果您四处挖掘,可能会找到您需要的数据。