Facebook 按关键字搜索

Facebook search by keyword

在facebook上,我曾经通过R搜索包含特定关键字的public posts,使用RFacebook包中的函数"searchFacebook",但该函数使用了API 在新 API 2 中停用,自 4 月 30 日起强制执行。 我查看了 APIs,显然没有更多的方法可以以这种方式提取 post。是真的吗?

是的,确实如此。 Public Post 搜索已经结束,别无选择,所以您不能再按关键字搜索了。

变更日志:https://developers.facebook.com/docs/apps/changelog

编辑:它不再在变更日志中,似乎太旧了。无论哪种方式,答案仍然是正确的。

自从将图表 API 更新为 v2.x 后,使用关键字在 FB 上搜索 public 帖子的功能现已删除。

下面是我在 R 中获取 "public pages" 的替代方法(您可以对 public 组执行相同的操作 - 只需将 searchPage 更改为 searchGroup)。

所有 comments/posts/reactions/replies 将合并到 1 个数据集中进行分析。

searchFB <- function(key){

cat(paste("Getting data for keyword: ",key,"\n", sep = " "))


pagelist<- select(filter(searchPages(key,x, n = 10000), 
                       category == "xxxxxxxxx"),id)

cat(paste("\nTotal of relevant pages is: ",nrow(pagelist),"\n"))
# specify which date you want to start "scrapping"
begin = "xxxx"
today = Sys.Date()

# Initiate variables

page_df <- data.frame()
#post_df <- data.frame()
comment_df <- data.frame()
replies_df <- data.frame()

#pulling data for page_df and comment_df 
for (i in 1:nrow(pagelist))
{
cat("\n")
 cat(paste("Getting posts from page number ",i," with ID: ", pagelist[i,], "\n"))
target_page <- getPage(pagelist[i,],x,n=100000, since=begin , until = today,
                       feed = TRUE, reactions = TRUE)

#Adding keyword to table 
if(!empty(target_page)){
  target_page <- cbind(key, target_page)
}
page_df <- try(rbind(page_df,target_page))

#Taken from Alex's code for checking if page has no posts
for (j in 1:nrow(target_page))
{

  if(is.null(target_page$id[j])){
  } else {
    target_post <- getPost(target_page$id[j], n=100000,  x, comments = TRUE, likes = TRUE)
    #post_df<- try(rbind(post_df,target_post$post))
    comment_df <-try(rbind(comment_df,target_post$comments))
    if (class(comment_df)=="try-error")next;
  }
}
if(class(page_df)=="try-error")next;
}

cat("\n Complete collecting. Now moving to merging phase! \n")
# Join 2 data frame to create 1 consolidated dataset for each keyword

if(!empty(page_df)){
#the 2nd part of ID
for (i in 1:nrow(page_df))
{
  x<-strsplit(page_df[i,]$id,"_")[[1]]
  y<-tolower(x)[2]
  page_df$join_id[i] <-y
}}

if(!empty(comment_df)){
#the 1st part of ID
for (i in 1:nrow(comment_df))
{
  x<-strsplit(comment_df[i,]$id,"_")[[1]]
  y<-tolower(x)[1]
  comment_df$join_id[i] <-y
}}

if(empty(page_df)) {
 final_dataset<-data.frame();
} else if (empty(comment_df)){
final_dataset<-page_df
} else {
final_dataset<-full_join(page_df,comment_df,by = c("join_id"))
}


cat("\n Writing file to .csv")
write.csv(final_dataset, file = paste(key,".csv", sep = ""),
        row.names=FALSE, qmethod='escape',
        fileEncoding = "UTF-8", na = "NA")
}
# Get data for xxx 
searchFB("xxx") #type your keyword here