Tweepy迭代在tweepy.Cursor(api.friends).items()

时间:2015-09-01 02:12:05

标签: python-2.7 tweepy

我试图获取用户的朋友并将其附加到给定条件的列表中:

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}]

你可以给我一些解决这个问题的提示吗?非常感谢

3 个答案:

答案 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)

新变量的文档如下。

<块引用>
  • wait_on_rate_limit – 是否自动等待速率限制补充
  • wait_on_rate_limit_notify – 在 Tweepy 等待速率限制补充时是否打印通知

答案 2 :(得分:0)

Twitter's API documentation,您已达到查询限制。看起来速率限制对于每15分钟的查询都有效,因此请在30分钟内重试或使用不同的IP地址来访问API。如果您向下滚动Twitter的文档,您将看到代码88。

相关问题