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

使用R语言httr包GET方法下载NSE CSV文件失败的解决咨询

问题:使用httr从NSE存档网站下载CSV时遭遇连接重置错误

我在R语言中尝试从印度国家证券交易所(NSE)存档网站下载CSV文件,使用的代码如下:

downloadfilename = paste("sec_bhavdata_full_", (format(myDate, "%d%m%Y")), ".csv", sep = "")

myURL = paste("https://nsearchives.nseindia.com/products/content/", downloadfilename, sep = "")

GET(myURL, user_agent("Mozilla/5.0"), write_disk(downloadfilename))

运行后收到错误:

Error in curl::curl_fetch_memory(url, handle = handle) :
Recv failure: Connection was reset

示例URL为:

https://nsearchives.nseindia.com/products/content/sec_bhavdata_full_24092024.csv

请问是否可以使用library(httr)完成该CSV文件的下载?该如何解决当前的连接重置问题?


解决方案

可以用httr完成下载,连接重置问题大概率是NSE服务器的反爬机制或连接参数配置导致的,以下是几种可行修复方案:

1. 完善请求头信息

NSE服务器会校验请求头的完整性,仅设置user_agent可能不足以通过验证,添加更多浏览器请求头字段模拟真实访问:

library(httr)

myDate <- as.Date("2024-09-24")
downloadfilename <- paste0("sec_bhavdata_full_", format(myDate, "%d%m%Y"), ".csv")
myURL <- paste0("https://nsearchives.nseindia.com/products/content/", downloadfilename)

# 构建完整请求头
request_headers <- add_headers(
  `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
  `Accept` = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
  `Referer` = "https://www.nseindia.com/",
  `Accept-Language` = "en-US,en;q=0.5"
)

# 发起请求并保存文件
GET(myURL, request_headers, write_disk(downloadfilename, overwrite = TRUE))

2. 添加请求延迟

频繁请求会触发服务器限流,在请求前添加随机延迟规避爬虫识别:

# 在GET请求前添加1-3秒的随机延迟
Sys.sleep(runif(1, 1, 3))
GET(myURL, request_headers, write_disk(downloadfilename, overwrite = TRUE))

3. 调整连接超时参数

连接重置可能是TCP连接超时导致的,通过config设置更长的超时时间:

GET(myURL, 
    request_headers, 
    config(timeout = 30),  # 设置30秒超时阈值
    write_disk(downloadfilename, overwrite = TRUE))

4. 验证URL有效性

确认生成的URL对应日期存在NSE存档,节假日或非交易日可能没有对应的CSV文件,这种情况也会触发连接类错误。


内容的提问来源于stack exchange,提问作者R Subroto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:22:16