使用循环 twitteR 查询处理 404 和其他错误响应
Handling 404 and other bad responses with looping twitteR queries
如果出现错误我的循环不会中断,我希望如此。我希望它继续进行下一次迭代。此示例是我遇到的错误和循环中断的最小示例。在我的实际应用程序中,我正在遍历从另一个脚本生成的一些关注者。
library(twitteR)
#set oauth...
for(i in 1:10) {
+ x <- getUser("nalegezx") }
Error in twInterfaceObj$doAPICall(paste("users", "show", sep = "/"), params = params, :
client error: (404) Not Found
我知道这个循环只会重写对 x 的相同响应。我只是对不打破循环感兴趣。
我不是 R Twitter 方面的专家 API,但我建议您考虑将对 getUser()
的调用放在 try
块中,如下所示:
for (i in 1:10) {
x <- try(getUser("sdlfkja"))
}
这应该可以防止您的代码在循环中间崩溃。如果你想在循环中出现警告或错误时也有单独的逻辑,你可以使用 tryCatch
:
for (i in 1:10) {
x <- tryCatch(getUser("sdlfkja"),
warning = function(w) {
print("warning");
# handle warning here
},
error = function(e) {
print("error");
# handle error here
})
}
我接受了 Tim 的回答,因为它解决了我遇到的问题,但对于我使用 lookupUsers
从用户个人资料上的 Twitter 获取许多结果的特定实例,它为我完成了工作,而不会影响我的请求限制。
如果出现错误我的循环不会中断,我希望如此。我希望它继续进行下一次迭代。此示例是我遇到的错误和循环中断的最小示例。在我的实际应用程序中,我正在遍历从另一个脚本生成的一些关注者。
library(twitteR)
#set oauth...
for(i in 1:10) {
+ x <- getUser("nalegezx") }
Error in twInterfaceObj$doAPICall(paste("users", "show", sep = "/"), params = params, : client error: (404) Not Found
我知道这个循环只会重写对 x 的相同响应。我只是对不打破循环感兴趣。
我不是 R Twitter 方面的专家 API,但我建议您考虑将对 getUser()
的调用放在 try
块中,如下所示:
for (i in 1:10) {
x <- try(getUser("sdlfkja"))
}
这应该可以防止您的代码在循环中间崩溃。如果你想在循环中出现警告或错误时也有单独的逻辑,你可以使用 tryCatch
:
for (i in 1:10) {
x <- tryCatch(getUser("sdlfkja"),
warning = function(w) {
print("warning");
# handle warning here
},
error = function(e) {
print("error");
# handle error here
})
}
我接受了 Tim 的回答,因为它解决了我遇到的问题,但对于我使用 lookupUsers
从用户个人资料上的 Twitter 获取许多结果的特定实例,它为我完成了工作,而不会影响我的请求限制。