2013-07-20 21 views
6

Tôi muốn lấy danh sách tất cả các quỹ tương hỗ có sẵn thông qua Yahoo Finance vào R. Có một chức năng stockSymbols trong gói TTR, nhưng dường như không nhận được các quỹ tương hỗ.Làm thế nào để có được danh sách tất cả các quỹ tương hỗ của Yahoo Finance trong R?

Cảm ơn,

+0

Lệnh 'chức năng stockSymbol' lấy danh sách các cổ phiếu từ trang web của Nasdaq (mà cũng liệt kê một vài trao đổi khác): nếu bạn biết của một trang web tương tự liệt kê các tài sản mà bạn muốn, bạn có thể chỉ cần truy xuất và phân tích cú pháp. –

+1

Có một trang web có danh sách đầy đủ các quỹ tương hỗ: eoddata.com cho bất kỳ ai quan tâm. Vấn đề của tôi là tôi cần phải có được các quỹ tương hỗ theo ngành và ngành. Yahoo Finance API có khả năng nhất –

Trả lời

3

Tôi không nghĩ rằng Yahoo cung cấp một danh sách của tất cả các quỹ tương hỗ họ có dữ liệu cho (tương tự, họ không cung cấp danh sách các cổ phiếu họ trang trải). Bạn có thể tải xuống danh sách từ trang web mà bạn đề cập trong các nhận xét, lặp qua tất cả các quỹ, truy xuất trang "Hồ sơ" tương ứng từ Yahoo, và trích xuất thông tin bạn cần - trường "Danh mục" dường như là điều gần gũi nhất với "ngành và ngành" mà bạn muốn.

# 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) 
Các vấn đề liên quan