程式
自動獲取iShares ETF持倉
我聽說ETF必須一直公開報告他們的持股情況。我已經看到,例如在 iShares 網站上,我可以將持股列表下載為 csv 文件:
https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf
我想有一種方法可以自動免費訪問這些館藏,也許使用一些 API?我檢查了 Blackrock API,但在首頁上,我沒有在“投資組合分析”和“搜尋證券”選項卡上看到任何有關 ETF 的資訊。
我是與網路互動的新手,所以也許我最好的選擇就是Google如何從網頁中提取可下載的內容?
有什麼想法嗎?
無需抓取網站。這應該永遠是最後的手段。下面將導入您詢問的 .csv 文件並將其保存到您選擇的目錄中。如果您不想指定目錄,則可以消除
dir
對它的任何引用,該文件將直接進入您的工作目錄。我通常單獨保存數據,因此該選項。from urllib.request import urlretrieve import pandas as pd dir = '[Your directory of choice]' url = 'https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf/\ 1467271812596.ajax?fileType=csv&fileName=SOXX_holdings&dataType=fund' urlretrieve(url, dir + 'SOXX_holdings.csv') df = pd.read_csv(dir + 'SOXX_holdings.csv', skiprows=10) print(df.head())
替代上述方法:將數據直接導入 pandas 數據幀,而不是通過傳遞 url 作為參數將其保存在本地。
import pandas as pd url = 'https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf/\ 1467271812596.ajax?fileType=csv&fileName=SOXX_holdings&dataType=fund' df = pd.read_csv(url, skiprows=10) print(df.head())
跳過前 10 行並列印頭部正是我想要查看數據的方式。你可以從這裡做很多其他的事情。
祝你好運。