雅虎财经 - 使用 R 进行网页抓取 - SelectorGadget 不起作用
Yahoo Finance - Web scraping with R - SelectorGadget doesn't work
我正在尝试从这个 Yahoo Finance Screener 获取 1980 年的匹配股票:
[https://finance.yahoo.com/screener/unsaved/38a77251-0996-439b-8be4-9d10ff18ff79?count=25&offset=0]
使用 R 和 rvest。
我通常使用 XPath,但我无法通过此网站的 SelectorGadget 获取它。
有人可以帮助我了解另一种方法来获取包含这些数据的所有页面。
我想要与这个类似的代码,并且可以与 Investing 一起使用。请注意,符号、名称和市值代码只是示例:
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
}
您可以尝试使用 quantmod
或 tidyquant
。
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()
我正在尝试从这个 Yahoo Finance Screener 获取 1980 年的匹配股票:
[https://finance.yahoo.com/screener/unsaved/38a77251-0996-439b-8be4-9d10ff18ff79?count=25&offset=0]
使用 R 和 rvest。
我通常使用 XPath,但我无法通过此网站的 SelectorGadget 获取它。
有人可以帮助我了解另一种方法来获取包含这些数据的所有页面。
我想要与这个类似的代码,并且可以与 Investing 一起使用。请注意,符号、名称和市值代码只是示例:
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
}
您可以尝试使用 quantmod
或 tidyquant
。
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()