当使用open =“r”创建连接时,它允许逐行读取,这对批处理大数据流很有用.例如,
this script通过一次读取100行来解析大小的gzip压缩JSON HTTP流.但不幸的是R不支持SSL:
> readLines(url("https://api.github.com/repos/jeroenooms/opencpu"))
Error in readLines(url("https://api.github.com/repos/jeroenooms/opencpu")) :
cannot open the connection: unsupported URL scheme
RCurl和httr包确实支持HTTPS,但我认为它们不能创建类似于url()的连接对象.是否有其他方法可以逐行读取HTTPS连接,类似于上面脚本中的示例?
最佳答案 是的,RCurl可以“逐行阅读”.事实上,它总是这样做,但更高级别的功能为了方便起见隐藏了这一点.您可以使用writefunction(和标头的headerfunction)来指定每次libcurl从结果体中收到足够的字节时调用的函数.该功能可以做任何想做的事情. RCurl包中有几个这样的例子.但这是一个简单的问题
curlPerform(url = "http://www.omegahat.org/index.html",
writefunction = function(txt, ...) {
cat("*", txt, "\n")
TRUE
})