我有以下代码来获取Twitter用户的关注者:

followers=[]
for user in tweepy.Cursor(api.followers,id=uNameInput).items():
    followers.append(user.screen_name)


但是,如果将其用于具有多个关注者的用户,则脚本将获得速率限制并停止。我通常会把这说成真的。尝试,除了其他中断循环,但不确定在这种情况下它将去哪里。

最佳答案

如果您想避免速率限制,则可以/应该等待下一个关注者页面请求:

for user in tweepy.Cursor(api.followers, id=uNameInput).items():
    followers.append(user.screen_name)
    time.sleep(60)


看起来不漂亮,但应该有帮助。

UPD:根据官方的twitter limits,您每15分钟只能发送30个请求才能获得followers

因此,您可以捕获速率限制异常并等待15分钟间隔结束,或者定义一个计数器并确保每15分钟间隔不超过30个请求。

这是一个示例,说明如何捕获蠕虫异常并等待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的请求量还有多少,然后决定是等待还是继续。

希望能有所帮助。

关于python - Tweepy Hipchat API-除了速率限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18053514/

10-12 15:31