Очистка финансовых данных от Yahoo Finance - PullRequest
0 голосов
/ 27 октября 2019

Я пытался собрать финансовые данные из Yahoo Finance, используя R, но не смог добиться успеха. Вы можете увидеть мой текущий код ниже. Основная проблема заключается в том, что таблица, хранящая финансовые данные в Yahoo Finance, не смоделирована как таблица в HTML-коде. Как я могу обойти эту проблему?

Я уже пытался скопировать Xpath, который, кажется, содержит таблицу, но безуспешно.

library(XML)

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

data <- readHTMLTable(tableNodes)

1 Ответ

0 голосов
/ 27 октября 2019

Раньше я работал с финансами Yahoo, вы делаете небольшую ошибку, поскольку tableNodes может содержать более одной таблицы, поэтому используйте все ниже для получения всех таблиц:

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")

earningsEstimates <- readHTMLTable(tableNodes[[1]])
revenueEstimates <- readHTMLTable(tableNodes[[2]])
earningsHistory <- readHTMLTable(tableNodes[[3]])
earningPerShareTrend <- readHTMLTable(tableNodes[[4]])
earningPerShareRevision <- readHTMLTable(tableNodes[[5]])
growthEstimates <- readHTMLTable(tableNodes[[6]])

print(earningsEstimates) # printing one table

output

 Earnings Estimate Current Qtr. (Oct 2019) Next Qtr. (Jan 2020) Current Year (2020)
1   No. of Analysts                      28                   28                  35
2     Avg. Estimate                    2.52                 2.17               10.13
3      Low Estimate                    2.47                 2.07               10.03
4     High Estimate                    2.58                 2.24               10.27
5      Year Ago EPS                    2.51                 2.25                9.89
  Next Year (2021)
1               35
2            10.96
3             10.7
4             11.2
5            10.13
...