2015-05-25 5 views
1

На facebook я использовал поиск публичных сообщений, содержащих определенные ключевые слова через R, используя функцию «searchFacebook» в пакете RFacebook, но эта функция использовала API, который был прекращен в новом API 2, то есть обязательно с 30 апреля. Я посмотрел API, и, видимо, нет способа извлечь сообщение таким образом. Это правда?Facebook поиск по ключевому слову

ответ

1

Да, это правда. Public Post Search ушел, и альтернативы нет, так что вы больше не можете искать по ключевому слову.

Changelog: https://developers.facebook.com/docs/apps/changelog

Edit: Это не в списке изменений больше, кажется, слишком старый. В любом случае, ответ по-прежнему верен.

+0

Ссылка на изменение не имеет деталей о внесении изменений –

+0

thanx для ввода, i wil update my answer – luschn

0

Поиск общедоступных сообщений на FB, использующих ключевые слова, теперь удален, так как они обновили Graph API до v2.x.

Ниже приведена моя альтернатива получить «общедоступные страницы» в R (вы можете сделать то же самое для публичных групп - просто измените searchPage на searchGroup).

Все комментарии/сообщения/реакции/ответы будут объединены в один единый набор данных для анализа.

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