使用next()方法预测下一次迭代的错误



我想用Tweepy获取用户的好友,并且在特定时间间隔内可以获取的好友数量有限制。为了处理这个查询限制,我添加了一个带有try-except的条件。逻辑是让Tweepy尝试找到下一个朋友,如果出现错误,请等待15分钟。但我意识到next()方法不起作用。我做错了什么?

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

def get_user_friends(screen_name):
friends = []
for user in tweepy.Cursor(api.friends, screen_name=screen_name).items(200):
friends.append(user.screen_name)
try:
test = user.next()  # Here
except:
time.sleep(60 * 15)
continue
return friends

您需要使用光标的next((方法,类似这样的方法可以工作:

import time
def limit_handled(cursor):
while True:
try:
yield cursor.next()
except tweepy.RateLimitError:
time.sleep(15 * 60)
except StopIteration:
return

def get_user_friends(screen_name):
friends = []
for user in limit_handled(tweepy.Cursor(api.friends, screen_name=screen_name).items(200)):
friends.append(user.screen_name)

return friends

你也可以在这里查看文档

最新更新