【发布时间】:2016-09-11 22:48:14
【问题描述】:
所以,首先,我意识到在处理 twitter 速率限制方面存在许多问题。我不知道为什么,但到目前为止我发现没有一个对我有用。
我正在使用 tweepy。我正在尝试获取用户关注者的所有关注者的列表。正如预期的那样,由于 twitter 的速率限制,我无法一次将所有内容都拉下来。我安装了 tweepy v 3.5,因此指的是http://docs.tweepy.org/en/v3.5.0/api.html。要获取我使用的原始用户的关注者列表:
auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
followerIDs = []
for page in tweepy.Cursor(api.followers_ids, screen_name=originatingUser, wait_on_rate_limit = True, wait_on_rate_limit_notify = True).pages():
followerIDs.extend(page)
followers = api.lookup_users(follower)
这有点作用,但很快变成:
tweepy.error.TweepError: [{u'message': u'Rate limit exceeded', u'code': 88}]
我的理论是,然后使用这样的方法为每个 followerID 检索每个用户的关注者:
for followerID in followerIDs:
for page in tweepy.Cursor(api.followers_ids, id=followerID, wait_on_rate_limit = True, wait_on_rate_limit_notify = True).pages():
followerIDs.extend(page)
我遇到的另一个问题是当我尝试查找用户名时。为此,它使用 itertools 中的 grouper 函数将关注者分成 100 个组(api.lookup_users 一次只能接受 100 个 id)并使用
followerIDs = grouper(followerIDs,100)
for followerGroup in followerIDs:
followerGroup=filter(None, followerGroup)
followers = api.lookup_users(followerGroup,wait_on_rate_limit = True)
for follower in followers:
print (originatingUser + ", " + str(follower.screen_name))
得到一个不同的错误,即:
TypeError: lookup_users() got an unexpected keyword argument 'wait_on_rate_limit'
这让我感到困惑,因为 tweepy api suggests 这应该是一个公认的论点。
关于我做错了什么有什么想法吗?
干杯 本。
【问题讨论】: