2

我正在尝试通过 R 流式传输和保存公共帖子。我已经获得了令牌并进行了搜索。这就是我所做的。

要求(RCurl)

要求(rjson)

数据 <- getURL(" https://graph.facebook.com/search?q=multishow&type=post&access_token=my_token ")

没关系,“数据”角色找到了一些东西。现在,如何将这个“数据”字符转换为数据框?是否可以在特定超时期间流式传输此搜索?

谢谢。

更新:

好的,现在我可以解析来自 Facebook 的 JSON 结果,但我仍然坚持正确地转换为 data.frame 并流式传输以获取新帖子。按照下面的代码:

library (RCurl)
library (rjson)
library (plyr)

data <- getURL("https://graph.facebook.com/search?q=my_query&type=post&access_token=my_token, cainfo="cacert.perm")

#JSON parser
parser <- newJSONParser()
parser$addData(data)
fb.data <- parser$getObject()

#JSON to data.frame 
#sometimes it works direct from rjson
df <- data.frame(fromJSON(fb.data))

#sometimes it works only with plyr package
df <- do.call("rbind.fill", lapply(fb.data, as.data.frame))

无论哪种方式,我都会得到一个带有 1 或 2 个观察值和数百个变量的 data.frame。我做的最后一次搜索,我得到了我的第一个观察值,有 42 个变量,第二个有 13 个变量,依此类推。我该如何处理它的任何线索?

4

1 回答 1

0

要设置timeout你可以在 curl 常规选项中搜索超时选项,如下所示

 names(getCurlOptionsConstants())[grep('.*timeout*.',names(getCurlOptionsConstants()))]

这给了我6个选项:

"timeout"              "connecttimeout"      
 "dns.cache.timeout"    "ftp.response.timeout" 
 "timeout.ms"           "connecttimeout.ms"   

我不知道您搜索的是哪一个,但我想您可以尝试以下方法:

getURL(url,.opts = list(timeout = 10))
于 2013-03-26T03:29:58.630 回答