1

我正在尝试逐页下载来自 FACEBOOK 公开帖子的公开评论和回复。

我的代码一直工作到 18 年 2 月 5 日,现在它显示以下“回复”错误。

Error in data.frame(from_id = json$from$id, from_name = json$from$name,  : 
  arguments imply differing number of rows: 0, 1
Called from: data.frame(from_id = json$from$id, from_name = json$from$name, 
    message = ifelse(!is.null(json$message), json$message, NA), 
    created_time = json$created_time, likes_count = json$like_count, 
    comments_count = json$comment_count, id = json$id, stringsAsFactors = F)

请参考下面我正在使用的代码。

    data_fun=function(II,JJ,page,my_oauth){
  test <- list()
  test.reply<- list()
  for (i in II:length(page$id)){
    test[[i]] <- getPost(post=page$id[i], token = my_oauth,n= 100000, comments = TRUE, likes = FALSE)
    if (nrow(test[[i]][["comments"]]) > 0) {
      write.csv(test[[i]], file = paste0(page$from_name[2],"_comments_", i, ".csv"), row.names = F)
      for (j in JJ:length(test[[i]]$comments$id)){
        test.reply[[j]] <-getCommentReplies(comment_id=test[[i]]$comments$id[j],token=my_oauth,n = 100000, replies = TRUE,likes = FALSE)
        if (nrow(test.reply[[j]][["replies"]]) > 0) {
          write.csv(test.reply[[j]], file = paste0(page$from_name[2],"_replies_",i,"_and_", j, ".csv"), row.names = F)
        }}}
}
  Sys.sleep(10)}

感谢您的支持提前。

4

1 回答 1

0

我遇到了同样的问题,因为 Facebook 在 1 月底更改了 api 规则。如果你使用 Pablo Barbera 的 github 上的“devtools”更新你的包,它应该适合你。我已经修改了我的代码(一点点),现在它可以很好地回复评论。但有一件令人沮丧的事情是,Facebook 似乎不允许提取用户名。我已经有一个数据池,所以我现在用它来训练和预测性别。如果您有任何问题并想联系 - 给我发电子邮件至“robert.chestnutt2@mail.dcu.ie”

顺便说一句 - 这对你来说可能不是问题,但我过去曾遇到过将 Rfacebook 输出写入 csv 的挑战。将输出保存为 .RData 文件可以更好地维护表单

于 2018-02-28T11:25:38.853 回答