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
在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