Quantmod无法获取Yahoo Finance数据,报HTTP error 401求助
解决HTTP 401错误的建议
HTTP 401是未授权访问错误,根源是Yahoo Finance调整了API访问规则,旧版quantmod依赖的无认证接口已被限制。以下是具体解决方案:
方案1:更新quantmod到最新版本
开发者可能针对Yahoo的接口变化修复了问题,先尝试更新包:
update.packages("quantmod")
更新后重新运行你的代码,若仍报错,尝试下面的替代方案。
方案2:换用适配Yahoo新API的包
推荐使用tidyquant或yfR,这两个包已适配Yahoo Finance的最新认证机制:
用tidyquant获取指标示例
# 安装并加载包 install.packages("tidyquant") library(tidyquant) Stocks <- c("BAC", "AAPL") # 获取估值和价格相关指标 metrics1 <- tq_get(Stocks, get = "key.ratios", options = list(period = "annual")) %>% filter(section %in% c("Valuation Ratios", "Price Performance")) %>% select(symbol, section, metric, value) # 查看结果 print(metrics1)
用yfR获取最新报价示例
# 安装并加载包 install.packages("yfR") library(yfR) Stocks <- c("BAC", "AAPL") # 获取最新报价及关键指标 metrics1 <- yf_get(tickers = Stocks, period = "1d", get_prices = TRUE, get_quote = TRUE) # 提取所需字段 select(metrics1, ticker, price_close, pe_ratio, pb_ratio, previous_close, year_high, price_change)
方案3:手动适配quantmod的API端点(不推荐)
如果坚持用quantmod,需要手动指定Yahoo的新API地址并处理认证,但步骤繁琐且不稳定,不如直接换包高效。
内容的提问来源于stack exchange,提问作者Gabor
相关产品推荐
相关产品推荐

