我有这个代码来获得 Twitter 用户的关注者:
followers=[]
for user in tweepy.Cursor(api.followers,id=uNameInput).items():
followers.append(user.screen_name)
但是,如果将其用于具有多个关注者的用户,则脚本会受到速率限制并停止。我通常会在一段时间内把它说成是真的;尝试,除了 else break loop 但不确定在这种情况下它会去哪里。
请您参考如下方法:
如果您想避免速率限制,您可以/应该在下一个关注者页面请求之前等待:
for user in tweepy.Cursor(api.followers, id=uNameInput).items():
followers.append(user.screen_name)
time.sleep(60)
看起来不漂亮,但应该有帮助。
UPD:据官方twitter limits ,您每 15 分钟的时间间隔只能发出 30 个请求来获得 关注者。
因此,您可以捕获速率限制异常并等待 15 分钟的间隔结束,或者定义一个计数器并确保您在每 15 分钟的间隔内发出的请求不会超过 30 个。
这是一个示例,您可以如何捕获 tweepy 异常并等待 15 分钟,然后再转到下一部分关注者:
import time
import tweepy
auth = tweepy.OAuthHandler(..., ...)
auth.set_access_token(..., ...)
api = tweepy.API(auth)
items = tweepy.Cursor(api.followers, screen_name="gvanrossum").items()
while True:
try:
item = next(items)
except tweepy.TweepError:
time.sleep(60 * 15)
item = next(items)
print item
虽然不确定这是最好的方法。
UPD2:还有另一种选择:您可以检查 rate_limit_status ,查看 followers 剩余的请求数量,然后决定是等待还是继续。
希望对您有所帮助。
