我正在尝试下载一个1.1千兆字节的文件,httr但我遇到以下错误:
x <- GET( extract.path )
Error in curlPerform(curl = handle$handle, .opts = curl_opts$values) :
cannot allocate more space: 1728053248 bytes
Run Code Online (Sandbox Code Playgroud)
我的C盘有400GB免费..
在RCurl包中,我看到maxfilesize和maxfilesize.large使用时的选项,getCurlOptionsConstants()但我不明白是否/如何传递httr通过config或set_config..或如果我需要切换到RCurl这... ..即使我确实需要切换,会增加最大文件大小的工作吗?
这是我的sessionInfo ..
> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] XML_3.96-1.1 …Run Code Online (Sandbox Code Playgroud) 我尝试了多种方法来安装 RCurl,但没有成功。我在输出中得到这个:
\n\n * installing *source* package \'RCurl\' ...\n** package \'RCurl\' successfully unpacked and MD5 sums checked\n** libs\nC:/Users/XXX/Documents/R/Rtools/mingw_64/bin/gcc -I"C:/PROGRA~1/R/R-33~1.1/include" -DNDEBUG -I/include -DHAVE_LIBIDN_FIELD=1 -DHAVE_CURLOPT_URL=1 -DHAVE_CURLINFO_EFFECTIVE_URL=1 -DHAVE_CURLINFO_RESPONSE_CODE=1 -DHAVE_CURLINFO_TOTAL_TIME=1 -DHAVE_CURLINFO_NAMELOOKUP_TIME=1 -DHAVE_CURLINFO_CONNECT_TIME=1 -DHAVE_CURLINFO_PRETRANSFER_TIME=1 -DHAVE_CURLINFO_SIZE_UPLOAD=1 -DHAVE_CURLINFO_SIZE_DOWNLOAD=1 -DHAVE_CURLINFO_SPEED_DOWNLOAD=1 -DHAVE_CURLINFO_SPEED_UPLOAD=1 -DHAVE_CURLINFO_HEADER_SIZE=1 -DHAVE_CURLINFO_REQUEST_SIZE=1 -DHAVE_CURLINFO_SSL_VERIFYRESULT=1 -DHAVE_CURLINFO_FILETIME=1 -DHAVE_CURLINFO_CONTENT_LENGTH_DOWNLOAD=1 -DHAVE_CURLINFO_CONTENT_LENGTH_UPLOAD=1 -DHAVE_CURLINFO_STARTTRANSFER_TIME=1 -DHAVE_CURLINFO_CONTENT_TYPE=1 -DHAVE_CURLINFO_REDIRECT_TIME=1 -DHAVE_CURLINFO_REDIRECT_COUNT=1 -DHAVE_CURLINFO_PRIVATE=1 -DHAVE_CURLINFO_HTTP_CONNECTCODE=1 -DHAVE_CURLINFO_HTTPAUTH_AVAIL=1 -DHAVE_CURLINFO_PROXYAUTH_AVAIL=1 -DHAVE_CURLINFO_OS_ERRNO=1 -DHAVE_CURLINFO_NUM_CONNECTS=1 -DHAVE_CURLINFO_SSL_ENGINES=1 -DHAVE_CURLINFO_COOKIELIST=1 -DHAVE_CURLINFO_LASTSOCKET=1 -DHAVE_CURLINFO_FTP_ENTRY_PATH=1 -DHAVE_CURLINFO_REDIRECT_URL=1 -DHAVE_CURLINFO_PRIMARY_IP=1 -DHAVE_CURLINFO_APPCONNECT_TIME=1 -DHAVE_CURLINFO_CERTINFO=1 -DHAVE_CURLINFO_CONDITION_UNMET=1 -DHAVE_CURLOPT_KEYPASSWD=1 -DHAVE_CURLOPT_DIRLISTONLY=1 -DHAVE_CURLOPT_APPEND=1 -DHAVE_CURLOPT_KRBLEVEL=1 -DHAVE_CURLOPT_USE_SSL=1 -DHAVE_CURLOPT_TIMEOUT_MS=1 -DHAVE_CURLOPT_CONNECTTIMEOUT_MS=1 -DHAVE_CURLOPT_HTTP_TRANSFER_DECODING=1 -DHAVE_CURLOPT_HTTP_CONTENT_DECODING=1 -DHAVE_CURLOPT_NEW_FILE_PERMS=1 -DHAVE_CURLOPT_NEW_DIRECTORY_PERMS=1 -DHAVE_CURLOPT_POSTREDIR=1 -DHAVE_CURLOPT_OPENSOCKETFUNCTION=1 -DHAVE_CURLOPT_OPENSOCKETDATA=1 -DHAVE_CURLOPT_COPYPOSTFIELDS=1 -DHAVE_CURLOPT_PROXY_TRANSFER_MODE=1 -DHAVE_CURLOPT_SEEKFUNCTION=1 -DHAVE_CURLOPT_SEEKDATA=1 -DHAVE_CURLOPT_CRLFILE=1 -DHAVE_CURLOPT_ISSUERCERT=1 -DHAVE_CURLOPT_ADDRESS_SCOPE=1 -DHAVE_CURLOPT_CERTINFO=1 …Run Code Online (Sandbox Code Playgroud) 我一直在使用 curl(在 R 中)的 getURL 从https://fantasy.premierleague.com/drf/bootstrap-static读取
示例代码:
print(getURL("https://fantasy.premierleague.com/drf/bootstrap-static"))
直到几天前都没有问题。但现在得到错误:
Run Code Online (Sandbox Code Playgroud)Error in function (type, msg, asError = TRUE) : error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
已升级到最新的 R (3.4.0) 和 curl 包:RCurl_1.95-4.8
我有一个解决方法(从 httr 使用 GET),但谁能帮我让它与 getURL 一起工作?
我相信服务器的变化是他们现在只支持 TLS 1.2。我尝试了以下修复,但现在出现新错误。可能与需要更新的 OpenSSL 相关?
CURL_SSLVERSION_TLSv1_2 <- 6L
opt <- RCurl::curlOptions(verbose = TRUE, sslversion =
CURL_SSLVERSION_TLSv1_2)
print( RCurl::getURL("https://fantasy.premierleague.com/drf/bootstrap-static", .opts = opt))
Run Code Online (Sandbox Code Playgroud)
新错误是:
Run Code Online (Sandbox Code Playgroud)Unsupported SSL protocol version
我尝试在 OS X 10.12.6 上安装 RCurl 但出现以下错误:
\n\nError: package or namespace load failed for \xe2\x80\x98RCurl\xe2\x80\x99 in dyn.load(file, DLLpath = DLLpath, ...):\n unable to load shared object \'/Users/nick/Library/R/3.4/library/RCurl/libs/RCurl.so\':\n dlopen(/Users/nick/Library/R/3.4/library/RCurl/libs/RCurl.so, 6): Library not loaded: @rpath/libcurl.4.dylib\n Referenced from: /Users/nick/Library/R/3.4/library/RCurl/libs/RCurl.so\n Reason: image not found\nError: loading failed\nExecution halted\nERROR: loading failed\n* removing \xe2\x80\x98/Users/nick/Library/R/3.4/library/RCurl\xe2\x80\x99\n\nThe downloaded source packages are in\n \xe2\x80\x98/private/var/folders/hx/9xx9fwq91t95k45dzlmzxfy40000gp/T/Rtmp14zSi1/downloaded_packages\xe2\x80\x99\nWarning message:\nIn install.packages("RCurl") :\n installation of package \xe2\x80\x98RCurl\xe2\x80\x99 had non-zero exit status\nRun Code Online (Sandbox Code Playgroud)\n\n这个错误已经被讨论过一些,但是解决方案都是特定于 linux 的,我不认为它们与 OS X 相关。我确实尝试安装了自制版本,curl但这没有帮助。
有任何想法吗?我认为更多的调试信息会有所帮助,但我不确定还可以提供什么。
\n\n预先感谢!\n尼克
\n这段代码以前在travis-ci上工作但现在失败了.在appveyor上工作正常
RCurl::getURL( "ftp://ftp.cdc.gov/pub/data/yrbs/" , ftp.use.epsv = TRUE, dirlistonly = TRUE )
Run Code Online (Sandbox Code Playgroud)
这是错误的文本 -
Error in function (type, msg, asError = TRUE) :
server did not report OK, got 425
Calls: get_catalog ... <Anonymous> -> curlPerform -> .Call -> <Anonymous> -> fun
Run Code Online (Sandbox Code Playgroud)
我认为我.travis.yml是一个非常标准的配置:
language: r
cache: packages
sudo: required
apt_packages:
- unixodbc-dev
- libarchive-dev
Run Code Online (Sandbox Code Playgroud)
2018年2月底成功构建日志,网址为https://api.travis-ci.org/v3/job/343635739/log.txt
失败的构建日志2018年3月初https://api.travis-ci.org/v3/job/352115990/log.txt
libcurl块看起来几乎相同,但成功和失败之间有一个明显的区别 -
2月末成功:
2 upgraded, 35 newly installed, 1 to remove and 124 not upgraded.
Run Code Online (Sandbox Code Playgroud)
3月中旬失败:
2 upgraded, 35 …Run Code Online (Sandbox Code Playgroud) 已经制定了OAuth的签名审批制度,对Dropbox的,我想下载,我救了一个有文件.RData使用API,以及httr的GET功能.
该请求是sucessfull与数据回来,但它是在原始格式,并想知道我怎么去再次将其转换成一个RDATA文件我的本地驱动器上.
这就是我到目前为止所做的:......
require(httr)
db.file.name <- "test.RData"
db.app <- oauth_app("db",key="xxxxx", secret="xxxxxxx")
db.sig <- sign_oauth1.0(db.app, token="xxxxxxx", token_secret="xxxxxx")
response <- GET(url=paste0("https://api-content.dropbox.com/1/files/dropbox/",db.file.name),config=c(db.sig,add_headers(Accept="x-dropbox-metadata")))
str(response)
List of 8
$ url : chr "https://api-content.dropbox.com/1/files/dropbox/test.RData"
$ handle :List of 2
..$ handle:Formal class 'CURLHandle' [package "RCurl"] with 1 slots
.. .. ..@ ref:<externalptr>
..$ url :List of 8
.. ..$ scheme : chr "https"
.. ..$ hostname: chr "api-content.dropbox.com"
.. ..$ port : NULL
.. ..$ path : chr ""
.. ..$ query …Run Code Online (Sandbox Code Playgroud) 我想从GET或POST获取响应头.
我的例子是:
library(httr)
library(RCurl)
url<-'http://www.omegahat.org/RCurl/philosophy.html'
doc<-GET(url)
names(doc)
[1] "url" "handle" "status_code" "headers" "cookies" "content" "times" "config"
Run Code Online (Sandbox Code Playgroud)
但是没有响应标头,只有请求标头.
结果应该是这样的:
Connection:Keep-Alive
Date:Mon, 11 Feb 2013 20:21:56 GMT
ETag:"126a001-e33d-4c12cf2702440"
Keep-Alive:timeout=15, max=100
Server:Apache/2.2.14 (Ubuntu)
Vary:Accept-Encoding
Run Code Online (Sandbox Code Playgroud)
我可以用R和httr/RCurl包来做这件事,还是R还不足以解决这类问题?
编辑:我想获得所有响应标头.我主要对位置响应感兴趣,这不是在这个例子中.
Edit2:我忘了告诉系统我在做什么 - 它是Windows 7
我的session.info
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Polish_Poland.1250 LC_CTYPE=Polish_Poland.1250 LC_MONETARY=Polish_Poland.1250
[4] LC_NUMERIC=C LC_TIME=Polish_Poland.1250
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rjson_0.2.12 RCurl_1.95-3 bitops_1.0-5 httr_0.2 XML_3.95-0.1
loaded …Run Code Online (Sandbox Code Playgroud) 我有一个名为URLlist的URL列表,并在其上循环以获取每个URL的源代码:
for (k in 1:length(URLlist)){
temp = getURL(URLlist[k])
}
Run Code Online (Sandbox Code Playgroud)
问题是一些随机URL,代码卡住了,我得到了错误消息:
Error in function (type, msg, asError = TRUE) :
transfer closed with outstanding read data remaining
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用出现问题的URL的getURL函数而不是在循环中时,它可以正常工作。
有什么帮助吗?非常感谢你
我正在尝试从页面下载内容,并且我发现响应数据格式不正确或不完整,就好像GET或getURL在加载这些数据之前一样.
library(httr)
library(RCurl)
url <- "https://www.vanguardcanada.ca/individual/etfs/etfs.htm"
d1 <- GET(url) # This shows a lot of {{ moustache style }} code that's not filled
d2 <- getURL(url) # This shows "" as if it didn't get anything
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办.我的目标是获取与浏览器中显示的链接相关联的数字:
https://www.vanguardcanada.ca/individual/etfs/etfs-detail-overview.htm?portId=9548
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我想下载并刮掉'9548'.
不确定为什么getURL和GET似乎与浏览器中显示的结果大相径庭.似乎数据加载缓慢,几乎就像GET和getURL在完全加载之前一样.
例如,看看:
x <- "https://www.vanguardcanada.ca/individual/etfs/etfs-detail-prices.htm?portId=9548"
readHTMLTable(htmlParse(GET(x)))
Run Code Online (Sandbox Code Playgroud) 我需要下载一个文件,将其保存在文件夹中,同时保留网站上的原始文件名.
url <- "http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"
Run Code Online (Sandbox Code Playgroud)
在Web浏览器中,如果单击该链接,则可以下载具有以下文件名的excel文件:
AfiliadosMuni-02-2015.xlsx
我知道我可以使用R中的命令download.file轻松下载它,如下所示:
download.file(url, "test.xlsx", method = "curl")
Run Code Online (Sandbox Code Playgroud)
但我真正需要的是我的脚本是下载它保持原始文件完整.我也知道我可以通过我的控制台卷曲这样做.
curl -O -J $"http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"
Run Code Online (Sandbox Code Playgroud)
但是,我再次在R脚本中需要这个.有没有类似于上面的方法,但在R?我已经研究过RCurl包但我找不到解决方案.