首页 > 解决方案 > Tweepy Cursor.items() 无法与 api.retweeters 一起按预期工作

问题描述

我有一些看起来像这样的代码:

import tweepy
auth = tweepy.OAuthHandler(...)
auth.set_access_token(...)
api = tweepy.API(auth)
for e, i in enumerate(tweepy.Cursor(api.retweeters, '1157819926532501504').items()): # 1157819926532501504 is the id of https://twitter.com/NASA/status/1157819926532501504
    print(e, i)

当我运行它时,我得到如下信息:

0 3249595190
1 1678701169
2 34877330
...
86 625615049
87 1157852235381870592

如果你查看https://twitter.com/NASA/status/1157819926532501504,你会看到这条推文有 3.2K 转推,而只有 88 条被打印出来。为什么是这样?我正在使用 tweepy.Cursor,所以分页应该自己处理,不是吗?我试图api.retweeters(id='1157819926532501504', cursor=-1)看看光标发生了什么,我得到了这样的回应:

([3249595190, 1678701169, ..., 625615049, 1157852235381870592], (0, 0))

更改光标参数不会更改响应,使用参数也不会更改page

我误解了基本原理吗?推特是否不允许检索推文的所有转发者?我误解了tweepy吗?我会很感激任何帮助。谢谢!

标签: pythontwittertweepy

解决方案


确实有一个限制:100。https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/get-statuses-retweets-id

不幸的是,它并不总是返回 100。有时,即使推文有 50k 转发,它也只返回 40 或 50。

解决方案:

1) 使用与原始推文完全相同的文本运行常规搜索。这是检索更多转发的最佳机会。转推也会在常规搜索中返回。

2)如果推文是“新鲜的”和“热门的”(有很多参与度),打几个电话。您可以使用它获取最新的推文。


推荐阅读