首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置从NSE网站下载的正确RCurl选项

如何设置从NSE网站下载的正确RCurl选项
EN

Stack Overflow用户
提问于 2015-08-30 02:46:19
回答 2查看 1.6K关注 0票数 2

我正在尝试从NSE印度网站(nseindia.com)下载文件。问题是,网站管理员不喜欢从网站上抓取下载文件或阅读页面的程序。他们似乎有一个基于用户代理的限制。

我要下载的文件是http://www.nseindia.com/archives/equities/bhavcopy/pr/PR280815.zip

我可以从linux shell下载这个

代码语言:javascript
运行
复制
curl -v -A "Mozilla" http://www.nseindia.com/archives/equities/bhavcopy/pr/PR280815.zip

输出如下

即将连接()到www.nseindia.com端口80 (#0) *尝试115.112.4.12.%%收到% Xferd平均速度时间时间当前Dload上传总消耗的左速度0 0 0-: 获取/存档/股票/bhavcopy/pr/pr 280815.zip HTTP/1.1用户代理: Mozilla主机: www.nseindia.com接受://< HTTP/1.1 200 OK < Server: Oracle Web/7.0<内容-长度: 374691

这允许我下载该文件。

我在R Curl中使用的代码是

代码语言:javascript
运行
复制
  library("RCurl")

  jurl <- "http://www.nseindia.com/archives/equities/bhavcopy/pr/PR280815.zip"
  juseragent <- "Mozilla"
  myOpts = curlOptions(verbose = TRUE, header = TRUE, useragent = juseragent)
  jfile <- getURL(jurl,.opts=myOpts)

这也是行不通的。

我也尝试过在更改用户代理的情况下使用基本库中的download.file,但没有成功。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-30 03:58:27

首先,您的问题不是设置用户代理,而是下载二进制数据。这样做是可行的:

代码语言:javascript
运行
复制
jfile <- getURLContent(jurl, .opts=myOpts, binary=TRUE)

下面是一个(更多)使用httr而不是RCurl的完整示例。

代码语言:javascript
运行
复制
library(httr)
url <- "http://www.nseindia.com/archives/equities/bhavcopy/pr/PR280815.zip"
response <- GET(url, user_agent("Mozilla"))
response$status                                          # 200 OK
# [1] 200
tf <- tempfile()
writeBin(content(response, "raw"), tf)                   # write response content (the zip file) to a temporary file
files <- unzip(tf, exdir=tempdir())                      # unzips to system temp directory and returns a vector of file names
df.lst <- lapply(files[grepl("\\.csv$",files)],read.csv) # convert .csv files to list of data.frames
head(df.lst[[2]])
#      SYMBOL SERIES                  SECURITY HIGH.LOW INDEX.FLAG
# 1 AGRODUTCH     EQ AGRO DUTCH INDUSTRIES LTD        H         NA
# 2    ALLSEC     EQ   ALLSEC TECHNOLOGIES LTD        H         NA
# 3      ALPA     BE     ALPA LABORATORIES LTD        H         NA
# 4      AMTL     EQ     ADV METERING TECH LTD        H         NA
# 5  ANIKINDS     BE       ANIK INDUSTRIES LTD        H         NA
# 6   ARSHIYA     EQ           ARSHIYA LIMITED        H         NA
票数 1
EN

Stack Overflow用户

发布于 2015-08-30 03:09:58

代码语言:javascript
运行
复制
library(curl) # this is not RCurl, you need to download curl

在工作目录中下载文件

代码语言:javascript
运行
复制
curl_download("http://www.nseindia.com/archives/equities/bhavcopy/pr/PR280815.zip","tt.zip",handle = new_handle("useragent" = "my_user_agent"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32292683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档