株価を利用する際には株価コードの一覧が必要となってきます。そこで調子に乗って株価コードの一覧を取得してみました
例によってRFinanceYJに追加する関数です
quoteStockMasterTsData <- function(){ financial.data <- data.frame(NULL) function.stockMasterData<-function(hira){ r <- NULL result.num <- 20 master.data <- data.frame(NULL) start.num<-0 while( result.num >= 20 ){ start.num <- start.num + 1 quote.table <- NULL quote.url <- paste('http://stocks.finance.yahoo.co.jp/stocks/qi/?js=',hira,'&p=',start.num,sep="") try( r <- xmlRoot(htmlTreeParse(quote.url,error=xmlErrorCumulator(immediate=F))), TRUE) if( is.null(r) ) stop(paste("Can not access :", quote.url)) try( quote.table <- xpathApply(r,"//a[contains(@href,'/stocks/detail')]"), TRUE ) if( is.null(quote.table) ){ if( is.null(master.data) ){ stop(paste("Can not quote :", x)) }else{ return(master.data) } } size <- xmlSize(quote.table)/3 if(size==0){ return(master.data) } for(i in 1:size){ mtmp<-data.frame(code=xmlValue(quote.table[[i*3-2]]),name=xmlValue(quote.table[[i*3-1]])) mtmp$code<-as.character(mtmp$code) mtmp$name<-as.character(mtmp$name) master.data <- rbind(master.data,mtmp) } result.num <- xmlSize(quote.table)/3 Sys.sleep(1) } return(master.data) } hiraList<-"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよわ" for(i in 1:nchar(hiraList)){ hira<-substring(hiraList,i,i) master.data<-function.stockMasterData(hira) financial.data<-rbind(financial.data,master.data) } financial.data <- financial.data[order(financial.data$code),] return(financial.data) }
YahooFinanceの銘柄名の頭文字から一覧を得るページがあるのでこちらからダウンロードするようにしました。
結果ですが、ページ数が多いので若干時間がかかります。
> stockMaster<-quoteStockMasterTsData() > stockMaster code name 1 3076 あい ホールディングス(株) 2 7013 (株)IHI 3 4812 ISID 4 9753 アイエックス・ナレッジ(株) .. 3451 9927 (株)ワットマン 3452 2918 わらべや日洋(株) 3453 3344 (株)ワンダーコーポレーション 3454 7564 (株)ワークマン 3455 2429 (株)ワールドホールディングス
全銘柄とれるようになりました!
- 2014.8.17
銘柄コード純になるように修正してみました