1

我已经阅读了其他问题,但我仍然不知道如何在 R 中解析 Facebook Graph Search 结果。我的主要目标是转换为数据框之类的东西,以分析一些列。

library(RCurl)
library(RJSONIO)
library(rjson)

data <- getURL("https://graph.facebook.com/search?q=flamengo&type=post&limit=1000", cainfo="cacert.perm")
#if you don't have "cacert.perm" file, do as follow
#download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.perm")

更新:谢谢@user1609452

现在如果我想包含嵌套在“喜欢”中的“计数”怎么办?让我展示:

names(fbData$data[[1]])
[1] "id"           "from"         "message"      "actions"      "privacy"     
[6] "type"         "created_time" "updated_time" "shares"       "likes"   
names(fbData$data[[1]]$likes)
[1] "data"  "count"

在这种情况下,我应该如何设置 match.fun 参数?

likes <- lapply(fbData$data[[1]]$likes,name='count')
Error in match.fun(FUN) : no "FUN" argument, no pattern

likes <- lapply(fbData$data[[1]]$likes,'[[',name='count')
Error in FUN(X[[2L]], ...) : index out of bounds

有人能帮助我吗?


如果我想包含“计数”,嵌套在“喜欢”中?让我展示:

names(fbData$data[[1]])
[1] "id"           "from"         "message"      "actions"      "privacy"     
[6] "type"         "created_time" "updated_time" "shares"       "likes"   
names(fbData$data[[1]]$likes)
[1] "data"  "count"

在这种情况下,我应该如何设置 match.fun 参数?

likes <- lapply(fbData$data[[1]]$likes,name='count')
Error in match.fun(FUN) : no "FUN" argument, no pattern

likes <- lapply(fbData$data[[1]]$likes,'[[',name='count')
Error in FUN(X[[2L]], ...) : index out of bounds

有人能帮助我吗?

4

2 回答 2

2

使用RJSONIOrjson不需要调用两者。导入JSON数据后,您需要将其转换为列表。

library(RCurl)
library(RJSONIO)

data <- getURL("https://graph.facebook.com/search?q=flamengo&type=post&limit=1000")

fbData <- fromJSON(data)

这些帖子包含在fbData$data.

#> length(fbData$data)
#[1] 500

第一篇文章有​​各种属性:

#> names(fbData$data[[1]])
#[1] "id"           "from"         "message"      "privacy"      "type"        
#[6] "application"  "created_time" "updated_time"

要将此数据转换为数据框,您需要确定要包含的内容以及如何构建它。例如,要获取您可以使用的所有消息正文:

lapply(fbData$data,'[[',name='message')

更新:

要获取帖子的点赞数,您可以使用:

lapply(fbData$data,function(x){x$likes$count})
于 2013-04-02T09:14:23.087 回答
1

这实际上是对您在评论中提出的问题的回答。我很抱歉没有在评论中回答,但我看不到这样做的选项。

如果你想替换 / 你可以使用

install.packages("stringr", dep=TRUE)
library("stringr")
library("RCurl")
library("RJSONIO")
data <- getURL("https://graph.facebook.com/search?q=flamengo&type=post&limit=1000")
clean <- str_replace_all(data,"\","whatever")
fbData <- fromJSON(clean)

其中“whatever”是您要替换它的内容。顺便说一句,如果您可以使用 rjson 而不是 RJSONIO 那么这可能会稍微好一点,但无论如何它们基本上是相同的。rjson 只是运行得更快更可靠,而 RJSONIO 具有更多功能。

哦,顺便说一句,您可以在 jsonlint.com 验证您的 JSON 数据

这听起来像一个有趣的应用程序,你要在这里,它是什么?某种FB跟踪狂?

于 2013-04-03T01:25:43.837 回答