我正在尝试从https页面下载文件,该页面需要按"我同意"按钮然后存储cookie.如果这个答案在某个地方显而易见,我道歉
当我直接在Chrome中打开网页并单击"我同意"时,文件开始自动下载.
我试图复制这个例子,但我不认为hangseng网站实际上存储了cookie /身份验证,所以我不知道这个例子是否应该是我需要的.
除此之外,我认为SSL使身份验证变得复杂,因为我认为getURL()调用将需要证书规范,如cainfo = system.file("CurlSSL","cacert.pem",package ="RCurl"))
我太过RCurl的初学者了解这个网站是否相当困难,或者我是否只是遗漏了一些明显的东西.
谢谢!
我正在尝试下载一个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的爬网程序时遇到的问题.目标是下载数千个网站的内容以进行统计分析.因此,解决方案应该扩展.
library(RCurl)
library(httr)
uris = c("inforapido.com.ar", "lm.facebook.com", "promoswap.enterfactory.com",
"p.brilig.com", "wap.renxo.com", "alamaula.com", "syndication.exoclick.com",
"mcp-latam.zed.com", "startappexchange.com", "fonts.googleapis.com",
"xnxx.com", "wv.inner-active.mobi", "canchallena.lanacion.com.ar",
"android.ole.com.ar", "livefyre.com", "fbapp://256002347743983/thread")
### RCurl Concurrent requests
getURIs <- function(uris, ..., multiHandle = getCurlMultiHandle(), .perform = TRUE){
content = list()
curls = list()
for(i in uris) {
curl = getCurlHandle()
content[[i]] = basicTextGatherer()
opts = curlOptions(URL = i, writefunction = content[[i]]$update,
timeout = 2, maxredirs = 3, verbose = TRUE,
followLocation = TRUE,...)
curlSetOpt(.opts = opts, curl = curl)
multiHandle = push(multiHandle, …Run Code Online (Sandbox Code Playgroud) 我使用http://www.regexper.com来查看picto表示正则表达式.我想要一个理想的方法:
例如,让我们使用正则表达式:"\\s*foo[A-Z]\\d{2,3}".我去他的网站并粘贴\s*foo[A-Z]\d{2,3}(注意删除双斜线).它返回:

我想从内部执行此过程.创建一个包装函数view_regex("\\s*foo[A-Z]\\d{2,3}")和页面(http://www.regexper.com/#%5Cs*foo%5BA-Z%5D%5Cd%7B2%2C3%7D)使用默认浏览器打开可视化图表.
我认为RCurl可能是合适的,但对我来说这是一个新的领域.我也看到双斜线是一个问题,因为http://www.regexper.com期望单斜线和R需要加倍.我可以让R使用cat如下方法向控制台返回单个斜杠,因此这可能是如何处理的.
x <- "\\s*foo[A-Z]\\d{2,3}"
cat(x)
\s*foo[A-Z]\d{2,3}
Run Code Online (Sandbox Code Playgroud) 我试图从网址获取一个csv文件,但似乎在一分钟后超时.csv文件是在请求时创建的,因此需要一分多钟.我试图增加超时但它没有工作,一分钟后它仍然失败.
我正在使用url,read.csv如下:
# Start the timer
ptm <- proc.time()
urlCSV <- getURL("http://someurl.com/getcsv", timeout = 200)
txtCSV <- textConnection(urlCSV)
csvFile <- read.csv(txtCSV)
close(txtCSV)
# Stop the timer
proc.time() - ptm
Run Code Online (Sandbox Code Playgroud)
结果日志:
Error in open.connection(file, "rt") : cannot open the connection
In addition: Warning message:
In open.connection(file, "rt") :
cannot open: HTTP status was '500 Internal Server Error'
user system elapsed
0.225 0.353 60.445
Run Code Online (Sandbox Code Playgroud)
当它达到一分钟时它会一直失败,可能是什么问题?或者我如何增加超时?
我在浏览器中尝试了网址并且工作正常,但加载csv需要一分多钟
我正试图png通过R从安全站点下载图像.
访问我使用的安全网站Rvest运作良好.
到目前为止,我已经提取了png图像的URL .
如何使用rvest下载此链接的图像?
rvest由于没有权限,函数外部的函数返回错误.
library(rvest)
uastring <- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
session <- html_session("https://url.png", user_agent(uastring))
form <- html_form(session)[[1]]
form <- set_values(form, username = "***", password="***", cookie_checkbox= TRUE)
session<-submit_form(session, form)
session2<-jump_to(session, "https://url.png")
## Status 200 using rvest, sucessfully accsessed page.
session
<session> https://url.png
Status: 200
Type: image/png
Size: 438935
## Using download.file returns status 403, page unable to open.
download.file("https://url.png", destfile = "t.png")
cannot open: …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法比较机场距离(IATA代码).有一些脚本,但没有使用R.所以我尝试使用API:
示例数据:
library(curl) # for curl post
departure <- c("DRS","TXL","STR","DUS","LEJ","FKB","LNZ")
arrival <- c("FKB","HER","BOJ","FUE","PMI","AYT","FUE")
flyID <- c(1,2,3,4,5,6,7)
df <- data.frame(departure,arrival,flyID)
departure arrival flyID
1 DRS FKB 1
2 TXL HER 2
3 STR BOJ 3
4 DUS FUE 4
5 LEJ PMI 5
6 FKB AYT 6
7 LNZ FUE 7
api<- curl_fetch_memory("https://airport.api.aero/airport/distance/DRS/FUE?user_key=d805e84363494ca03b9b52d5a505c4d1")
cat(rawToChar(api$content))
callback({"processingDurationMillis":0,"authorisedAPI":true,"success":true,"airline":null,"errorMessage":null,"distance":"3,416.1","units":"km"})
Run Code Online (Sandbox Code Playgroud)
其中DRS对应于出发和FUE到达机场
所以我虽然循环df并粘贴到url.然而,对于R - Newbie而言,这似乎有些困难
df$distance<- list(length = nrow(df))
for (i in 1:nrow(df)){
url <- paste0("https://airport.api.aero/airport/distance/", i, "FUE ?user_key=d805e84363494ca03b9b52d5a505c4d1")
myData[[i]] <- read.table(url, header=T,sep="|")
} …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