我正在寻找一种通过yahoo finance等网络服务获取ETF保留列表的方法。到目前为止,YQL还没有产生预期的结果。
作为一个例子,ZUB.TO是一个持有的ETF。这是holdings的列表,通过查询yahoo.finance.quotes我们没有得到正确的information。 The result.
是否有另一张表格可以包含所有权?
答案 0 :(得分:0)
也许无法从Yahoo Finance下载和/或可能无法正常下载。
相反,如何使用ETF提供程序已经具有的各种API下载馆藏的Excel或CSV文件?
使用“ append_df_to_excel”文件作为文件导入,然后使用以下代码为SSgA(道富环球投资顾问)提供的所有11个部门SPDR 制作Excel文件。
我个人使用它来进行宽度分析。
import pandas as pd
import append_to_excel
# https://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file-without-overwriting-data-using-pandas
##############################################################################
# Author: Salil Gangal
# Posted on: 08-JUL-2018
# Forum: Stack Overflow
##############################################################################
output_file = 'C:\my_python\SPDR_Holdings.xlsx'
base_url = "http://www.sectorspdr.com/sectorspdr/IDCO.Client.Spdrs.Holdings/Export/ExportExcel?symbol="
data = {
'Ticker' : [ 'XLC','XLY','XLP','XLE','XLF','XLV','XLI','XLB','XLRE','XLK','XLU' ]
, 'Name' : [ 'Communication Services','Consumer Discretionary','Consumer Staples','Energy','Financials','Health Care','Industrials','Materials','Real Estate','Technology','Utilities' ]
}
spdr_df = pd.DataFrame(data)
print(spdr_df)
for i, row in spdr_df.iterrows():
url = base_url + row['Ticker']
df_url = pd.read_excel(url)
header = df_url.iloc[0]
holdings_df = df_url[1:]
holdings_df.set_axis(header, axis='columns', inplace=True)
print("\n\n", row['Ticker'] , "\n")
print(holdings_df)
append_df_to_excel(output_file, holdings_df, sheet_name= row['Ticker'], index=False)