2

Yahoo! からデータをスクレイピングした経験のある人はいますか? R を使用した財務の主要な統計ページ? read_htmlhtml_nodes()、およびパッケージを使用して、html から直接データをスクレイピングすることに慣れていhtml_text()ます。rvestただし、この Web ページのMSFT キー統計は少し複雑です。すべての統計が XHR、JS、または Doc に保持されているかどうかはわかりません。データはJSONで保存されていると思います。この Web ページのデータを R で抽出して解析する良い方法を知っている人がいたら、私の質問に親切に答えてください。よろしくお願いします!

quantmodまたは、またはを介し​​てこれらのメトリックを抽出するより便利な方法がある場合は、Quandlお知らせください。それは非常に優れたソリューションです。

4

3 に答える 3

7

これが古いスレッドであることは知っていますが、Yahoo Analyst のテーブルをスクレイピングするために使用したので、共有したいと思います。

# Yahoo webscrape Analysts
library(XML)

symbol = "HD"
url <- paste('https://finance.yahoo.com/quote/HD/analysts?p=',symbol,sep="")
webpage <- readLines(url)
html <- htmlTreeParse(webpage, useInternalNodes = TRUE, asText = TRUE)
tableNodes <- getNodeSet(html, "//table")

earningEstimates <- readHTMLTable(tableNodes[[1]])
revenueEstimates <- readHTMLTable(tableNodes[[2]])
earningHistory <- readHTMLTable(tableNodes[[3]])
epsTrend <- readHTMLTable(tableNodes[[4]])
epsRevisions <- readHTMLTable(tableNodes[[5]])
growthEst <- readHTMLTable(tableNodes[[6]])

乾杯、ソディ

于 2018-03-28T16:46:37.433 に答える
4

エクセルはとうの昔にやめました。Rは間違いなくこのようなものに行く方法です。

library(XML)

stocks <- c("AXP","BA","CAT","CSCO")

for (s in stocks) {
      url <- paste0("http://finviz.com/quote.ashx?t=", s)
      webpage <- readLines(url)
      html <- htmlTreeParse(webpage, useInternalNodes = TRUE, asText = TRUE)
      tableNodes <- getNodeSet(html, "//table")

      # ASSIGN TO STOCK NAMED DFS
      assign(s, readHTMLTable(tableNodes[[9]], 
                header= c("data1", "data2", "data3", "data4", "data5", "data6",
                          "data7", "data8", "data9", "data10", "data11", "data12")))

      # ADD COLUMN TO IDENTIFY STOCK 
      df <- get(s)
      df['stock'] <- s
      assign(s, df)
}

# COMBINE ALL STOCK DATA 
stockdatalist <- cbind(mget(stocks))
stockdata <- do.call(rbind, stockdatalist)
# MOVE STOCK ID TO FIRST COLUMN
stockdata <- stockdata[, c(ncol(stockdata), 1:ncol(stockdata)-1)]

# SAVE TO CSV
write.table(stockdata, "C:/Users/your_path_here/Desktop/MyData.csv", sep=",", 
            row.names=FALSE, col.names=FALSE)

# REMOVE TEMP OBJECTS
rm(df, stockdatalist)
于 2016-11-09T01:21:52.380 に答える
2

ここに示すメソッドを XML ライブラリで使用すると、readLines(page) で警告が表示されます。

よりクリーンなアプローチのために rvest と xml2 を使用できます。この例では、キー統計 Yahoo! からキー統計を取得する方法を示します。財務ページ。ここでは、株式のフロートを取得したいと考えています。float が quantmod から利用できるとは思いませんが、重要な統計値のいくつかは利用できます。リストを参照する必要があります。

library(xml2)
library(rvest)

getFloat <- function(stock){
    url <- paste0("https://finance.yahoo.com/quote/", stock, "/key-statistics?p=", stock)
    tables <- read_html(url) %>%
    html_nodes("table") %>%
    html_table()
    float <- as.vector(tables[[3]][4,2])
    last <- substr(float, nchar(float)-1+1, nchar(float))
    float <-gsub("[a-zA-Z]", "", float)
    float <- as.numeric(as.character(float))
    if(last == "k"){
        float <- float * 1000
    } else if (last == "M") {
        float <- float * 1000000
    } else if (last == "B") {
        float <- float * 1000000000
    }
    return(float)
}
getFloat("DIS")

[1] 1.81e+09

それは利用可能なディズニーの株式の多くです.

于 2021-01-03T17:31:09.553 に答える