You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用rvest包read_html无法获取NSE股票网站HTML如何解决?

问题原因

NSE(印度国家证券交易所)网站配置了基础反爬校验规则,会检查HTTP请求的请求头信息,你直接使用read_html()发送无请求头的裸请求,会被服务器拦截,请求长期处于等待响应状态,因此控制台没有返回内容也不报错。

解决方案

使用httr包构造符合浏览器规范的HTTP请求,携带合法请求头模拟普通用户访问,即可正常拿到页面内容。
如果未安装httr包,先执行安装命令:
install.packages("httr")

修改后的可运行代码如下:

library(rvest)
library(dplyr)
library(httr)

nes_link <- "https://www.nseindia.com/get-quotes/equity?symbol=TATAMOTORS"

# 构造带请求头的GET请求,模拟浏览器访问,设置超时避免长期卡住
response <- GET(
  url = nes_link,
  add_headers(
    `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    `Accept-Language` = "en-US,en;q=0.9"
  ),
  timeout(10)
)

# 校验请求状态后提取数据
if (status_code(response) == 200) {
  nes_page <- read_html(content(response, "text"))
  
  price_day1 <- nes_page %>% 
    html_nodes("span#quoteLtp") %>% 
    html_text()
  
  print(price_day1)
} else {
  print(paste("请求失败,状态码:", status_code(response)))
}

注意事项

  • 不要短时间内频繁向该网站发送请求,避免IP被临时封禁
  • 如果运行后返回值为空,说明目标数据是前端JS动态渲染生成的,静态爬取无法获取,可以改用RSelenium等无头浏览器工具,模拟浏览器完整加载页面后再提取数据

内容的提问来源于stack exchange,提问作者Shaikh Faizan Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:15:03