标签: rcurl

如何使用R从需要cookie的SSL页面下载压缩文件

我正在尝试从https页面下载文件,该页面需要按"我同意"按钮然后存储cookie.如果这个答案在某个地方显而易见,我道歉

当我直接在Chrome中打开网页并单击"我同意"时,文件开始自动下载.

http://www.icpsr.umich.edu/cgi-bin/bob/zipcart2?path=SAMHDA&study=32722&bundle=delimited&ds=1&dups=yes

我试图复制这个例子,但我不认为hangseng网站实际上存储了cookie /身份验证,所以我不知道这个例子是否应该是我需要的.

除此之外,我认为SSL使身份验证变得复杂,因为我认为getURL()调用将需要证书规范,如cainfo = system.file("CurlSSL","cacert.pem",package ="RCurl"))

我太过RCurl的初学者了解这个网站是否相当困难,或者我是否只是遗漏了一些明显的东西.

谢谢!

r web-scraping rcurl

6
推荐指数
1
解决办法
2479
查看次数

下载大文件时httr GET函数空间不足

我正在尝试下载一个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包中,我看到maxfilesizemaxfilesize.large使用时的选项,getCurlOptionsConstants()但我不明白是否/如何传递httr通过configset_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)

r web-scraping rcurl httr

6
推荐指数
1
解决办法
631
查看次数

基于并发请求的RCurl爬虫问题

以下是一个脚本,用于重现我在构建具有执行并发请求的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)

r rcurl httr

6
推荐指数
1
解决办法
7494
查看次数

发送表达到网站返回动态结果(图片)

我使用http://www.regexper.com来查看picto表示正则表达式.我想要一个理想的方法:

  1. 将正则表达式发送到网站
  2. 打开显示该表达式的网站

例如,让我们使用正则表达式:"\\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)

r rcurl

6
推荐指数
1
解决办法
115
查看次数

R中请求URL失败/超时

我试图从网址获取一个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需要一分多钟

csv rest url r rcurl

6
推荐指数
1
解决办法
3990
查看次数

R:使用rvest下载图像

我正试图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)

r download rcurl httr rvest

6
推荐指数
2
解决办法
6719
查看次数

使用API​​计算R内两个机场(两列)之间的距离?

我想知道是否有办法比较机场距离(IATA代码).有一些脚本,但没有使用R.所以我尝试使用API​​:

developer.aero

示例数据:

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)

r rcurl httr

6
推荐指数
2
解决办法
1655
查看次数

无法安装“RCurl”(Rcurl.h:4:23:致命错误:curl/curl.h:没有这样的文件或目录)

我尝试了多种方法来安装 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 libcurl rcurl

6
推荐指数
1
解决办法
3306
查看次数

R - 更改站点后使用 curl 中的 getURL 时出错

我一直在使用 curl(在 R 中)的 getURL 从https://fantasy.premierleague.com/drf/bootstrap-static读取

示例代码: print(getURL("https://fantasy.premierleague.com/drf/bootstrap-static"))

直到几天前都没有问题。但现在得到错误:

Error in function (type, msg, asError = TRUE)  : 
  error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
Run Code Online (Sandbox Code Playgroud)

已升级到最新的 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)

新错误是:

Unsupported SSL protocol version
Run Code Online (Sandbox Code Playgroud)

r rcurl

6
推荐指数
1
解决办法
9609
查看次数

包“RCurl”的安装具有非零退出状态

我尝试在 OS X 10.12.6 上安装 RCurl 但出现以下错误:

\n\n
Error: 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

这个错误已经被讨论过一些,但是解决方案都是特定于 linux 的,我不认为它们与 OS X 相关。我确实尝试安装了自制版本,curl但这没有帮助。

\n\n

有任何想法吗?我认为更多的调试信息会有所帮助,但我不确定还可以提供什么。

\n\n

预先感谢!\n尼克

\n

macos r rcurl

6
推荐指数
1
解决办法
8576
查看次数

标签 统计

r ×10

rcurl ×10

httr ×4

web-scraping ×2

csv ×1

curl ×1

download ×1

libcurl ×1

macos ×1

rest ×1

rvest ×1

url ×1