我试图获取用户的朋友并将其附加到给定条件的列表中:
for friend in tweepy.Cursor(api.friends).items():
if friend not in visited:
screen_names.append(friend.screen_name)
visited.append(friend.screen_name)
但是我收到了一个错误:
raise RateLimitError(error_msg, resp)
tweepy.error.RateLimitError: [{u'message': u'Rate limit exceeded', u'code': 88}]
你可以给我一些解决这个问题的提示吗?非常感谢
答案 0 :(得分:4)
默认情况下,friends
类的API
方法仅返回每个呼叫20个用户的列表,并且通过Twitter API,每个窗口仅限15个呼叫(15分钟)。因此,您只能在15分钟内获取20 x 15 = 300个朋友。
Cursor
中的 tweepy
是获取结果的另一种方式,无需在每次调用Twitter API时管理cursor
值。
您可以通过添加额外参数count
来增加每次调用所获取的结果数。
tweepy.Cursor(api.friends, count = 200)
count
的最大值可以是200.如果您的朋友超过200 x 15 = 3000,则需要使用正常的api.friends
方法,同时维护cursor
值并使用sleep
分配呼叫时间。有关详细信息,请参阅GET friends/list页面。
答案 1 :(得分:2)
从 tweepy 3.2+ 开始,您可以指示 tweepy 库等待速率限制。这样您就不必在代码中执行此操作。
要使用此功能,您需要按如下方式初始化您的 api 句柄:
self.api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
新变量的文档如下。
<块引用>答案 2 :(得分:0)
每Twitter's API documentation,您已达到查询限制。看起来速率限制对于每15分钟的查询都有效,因此请在30分钟内重试或使用不同的IP地址来访问API。如果您向下滚动Twitter的文档,您将看到代码88。