使用R语言tq_get函数从Yahoo下载股票数据时遇403错误求助
解决tq_get下载RCL股票数据时的HTTP 403错误
HTTP 403错误是Yahoo Finance的反爬机制拦截请求导致的,以下是几种可行的解决方法:
方法1:更换为Alpha Vantage数据源
Alpha Vantage提供免费股票数据API,需先去官网申请免费密钥,再按以下步骤操作:
# 安装依赖包(未安装时执行) install.packages(c("tidyquant", "quantmod")) library(tidyquant) library(quantmod) # 设置API密钥 Sys.setenv(ALPHAVANTAGE_API_KEY = "你的Alpha Vantage密钥") # 获取RCL数据并转为tidy格式 rcl_data <- getSymbols("RCL", src = "av", auto.assign = FALSE) %>% as_tibble(rownames = "date") %>% rename( open = RCL.Open, high = RCL.High, low = RCL.Low, close = RCL.Close, volume = RCL.Volume, adjusted = RCL.Adjusted )
方法2:修改请求头模拟浏览器访问
尝试修改getSymbols.yahoo的默认User-Agent,绕过Yahoo反爬检测:
library(tidyquant) # 设置浏览器模拟的User-Agent options(getSymbols.yahoo.useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") # 重新尝试获取数据 rcl_data <- tq_get("RCL", get = "stock.prices")
方法3:使用Tiingo数据源
Tiingo提供免费股票数据服务,申请密钥后可直接用tq_get调用:
library(tidyquant) # 设置Tiingo API密钥 Sys.setenv(TIINGO_API_KEY = "你的Tiingo密钥") # 获取RCL数据 rcl_data <- tq_get("RCL", get = "stock.prices", src = "tiingo")
注意事项
- Alpha Vantage和Tiingo的免费API有请求次数限制,避免短时间内大量请求。
- 如果修改User-Agent的方法无效,说明Yahoo反爬规则已更新,优先更换数据源。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

