如何使用twitter API处理错误



我有一个用来提取和分类推文的脚本。它使用CSV,其中我有一系列用户名和其他信息。但是,有些用户名处于非活动状态,导致数据帧为空。这使我的脚本崩溃。关于错误处理有什么建议吗?基本上,如果";temp"&lt-get_all_tweets获得0条我需要的推文"下一个";。我下面的内容不起作用。

for (i in 1:length(usernames))
{
#get tweets and subset to text, ID, creation  (may drop ID)
rm(temp)
temp<- get_all_tweets(users = usernames[i], start_tweets = start_date[i], end_tweets = end_date[i], bearer_token = get_bearer(),file="test",data_path="Tweets",is_retweet=FALSE, is_reply=FALSE,n = 15000) %>% subset(select=c("text","id","created_at"))
#error control
if (!exists("temp")){next}

剩余的脚本作品

这是使用trytryCatch进行错误处理的一个很好的示例。(还有其他处理信号的方法,但它们有点…迂回:-(

试试这个:

for (i in seq_along(usernames)) {
temp <- tryCatch(
get_all_tweets(
users = usernames[i], start_tweets = start_date[i],
end_tweets = end_date[i], bearer_token = get_bearer(),
file = "test", data_path = "Tweets", is_retweet = FALSE,
is_reply = FALSE, n = 15000),
error = function(e) e)
if (inherits(temp, "error")) {
warning("error retrieving data for ", sQuote(usernames[i], FALSE), ": ",
conditionMessage(temp), call. = FALSE)
# perhaps something more here?
} else {
temp <- subset(temp, select = c("text", "id", "created_at"))
# rest of your code here
}
}

这段代码有一个简单的if语句,在成功调用get_all_tweets时进行分支。在这种情况下,如果出现错误,我选择不采取任何行动。有时你可能想做其他事情(例如,用不同的args再次调用,或使用默认数据(,然后你可能会做这样的事情:

for (i in seq_along(usernames)) {
temp <- tryCatch(
get_all_tweets(
users = usernames[i], start_tweets = start_date[i],
end_tweets = end_date[i], bearer_token = get_bearer(),
file = "test", data_path = "Tweets", is_retweet = FALSE,
is_reply = FALSE, n = 15000),
error = function(e) e)
if (inherits(temp, "error")) {
warning("error retrieving data for ", sQuote(usernames[i], FALSE), ": ",
conditionMessage(temp), call. = FALSE)
# assign to temp from some other method such that
# the rest of your code works
} else {
temp <- subset(temp, select = c("text", "id", "created_at"))
}
# rest of your code here
}

最新更新