我想用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
你也可以在这里查看文档