2013-07-20 6 views
6

Yahoo Finance aracılığıyla mevcut olan tüm yatırım fonlarının listesini almak istiyorum. TTR paketinde bir stockSymbols işlevi var, ancak yatırım fonlarını almıyor gibi görünüyor.R'deki tüm Yahoo Finance yatırım fonlarının listesi nasıl alınır?

sayesinde, Yahoo onlar için veri (benzer şekilde, kapsadıkları stokları bir listesini vermeyin) olan tüm yatırım fonlarının listesini sağlamak sanmıyorum

+0

'stockSymbol' fonksiyonu (aynı zamanda diğer birkaç alışverişini listeler) Nasdaq web stoklardan listesini alır basitçe al ve onu ayrıştır. –

+1

İlgilenilen herkes için eoddata.com: tam bir yatırım fonları listesi olan bir web sitesi var. Benim sorunum, sektöre ve sektöre yatırım fonları almam gerektiğidir. Yahoo Finance API büyük olasılıkla bunu yapıyor –

cevap

3

. Listede yer alan listeden tüm fonları, adresindeki Yahoo, adresindeki ilgili "Profil" sayfasını geri alabilir ve ihtiyaç duyduğunuz bilgileri elde edebilirsiniz: "Kategori" alanı İstediğiniz "sektör ve endüstri" ye en yakın şey olmak. yapabilirsiniz , istediğiniz varlıkları listeleyen bir benzeri web sayfasının biliyorsanız :

# Read the list of funds 
# I assume the file was downloaded manually from 
# http://www.eoddata.com/Data/symbollist.aspx?e=USMF 
# This requires registration (free). 
d <- read.delim("USMF.txt", stringsAsFactors = FALSE) 

# Retrieve the profile page, for each of the funds. 
# It takes 1 second for each, and there are 24,000 of them: 
# this may take more than 6 hours. 
library(RCurl) 
library(stringr) 
d$Category <- "" 
for(i in seq_len(nrow(d))) { 
    try({ 
    url <- paste0("http://uk.finance.yahoo.com/q/pr?s=", d$Symbol[i]) 
    cat(url, " ") 
    profile <- getURL(url) 
    row <- str_extract(profile, "Category.*?</tr>") 
    cell <- str_extract(row,  "<td.*</td>"  ) 
    d$Category[i] <- str_replace_all(cell, "<.*?>", "") 
    cat(d$Category[i], "\n") 
    }) 
} 
head(d)