Yahoo Finance-使用R进行网页抓取-SelectorGadget不起作用

时间:2020-08-08 16:14:41

标签: r rvest yahoo-finance

我正试图从Yahoo Finance Screener获得1980年的匹配股票:

[https://finance.yahoo.com/screener/unsaved/38a77251-0996-439b-8be4-9d10ff18ff79?count=25&offset=0]

使用R和rvest。

我通常使用XPath,但是在此网站上无法通过SelectorGadget获得它。

有人可以帮我有关用这些数据获取页面的另一种方法。

我想使用与Investing相似的代码。请注意,符号,名称和MarketCap代码只是示例:

library(rvest)
library(dplyr)

i=0
for(z in 1:80){
  
  url_base<-paste("https://finance.yahoo.com/screener/unsaved/38a77251-0996-439b-8be4-9d10ff18ff79?count=25&offset=0")
  zpg <- read_html(url_base)
  Symbol<-zpg %>% html_nodes("table") %>% html_nodes("span") %>% html_attr("data-id" )
  Name<-zpg %>% html_nodes("table") %>% html_nodes("span") %>% html_attr("data-name" )
  MarketCap<-zpg %>% html_nodes("table") %>% html_nodes("span") %>% html_attr("data-name" )
  data<-data.frame(WebID,FullName,MarketCap)
  
  if(i==0){
    USA<-data}else{
      USA<-rbind(USA,data)
    }
  i=i+1
}

1 个答案:

答案 0 :(得分:1)

您可以尝试使用quantmodtidyquant

library(tidyverse)
library(tidyquant)

# getting symbols for NASDAQ
nasdaq <- read_delim("https://nasdaqtrader.com/dynamic/SymDir/nasdaqlisted.txt", delim = "|")

# scraping the data
df <- nasdaq %>%
  head() %>% # to fetch only a few rows
  rowwise() %>%
  mutate(data = list(tq_get(Symbol, from = '2020-08-01', to = "2020-08-07", warnings = FALSE)))

# getting the data ready
df2 <- df$data %>%
  bind_rows()