Tweepy 遍历 tweepy.Cursor(api.friends).items()

Tweepy iterating over tweepy.Cursor(api.friends).items()

我正在尝试获取用户的朋友并将他们附加到给定条件的列表中:

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

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

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

默认情况下,friends API class 的方法,returns 每次调用仅包含 20 个用户的列表,而 Twitter API 你是有限的每 window(15 分钟)仅调用 15 次。因此,您只能在 15 分钟内获取 20 x 15 = 300 个朋友。

tweepy 中的

Cursor 是另一种在每次调用 Twitter API.

时无需管理 cursor 值即可获得结果的方法

您可以通过包含额外参数 count.

来增加每次调用获取的结果数
tweepy.Cursor(api.friends, count = 200)

count 的最大值可以是 200。如果你的朋友超过 200 x 15 = 3000,那么你需要使用正常的 api.friends 方法,同时保持 cursor值并使用 sleep 来分配调用时间。有关详细信息,请参阅 GET friends/list 页面。

从 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 – Whether or not to automatically wait for rate limits to replenish
  • wait_on_rate_limit_notify – Whether or not to print a notification when Tweepy is waiting for rate limits to replenish