python - 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吗?我会很感激任何帮助。谢谢!
解决方案
确实有一个限制:100。https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/get-statuses-retweets-id
不幸的是,它并不总是返回 100。有时,即使推文有 50k 转发,它也只返回 40 或 50。
解决方案:
1) 使用与原始推文完全相同的文本运行常规搜索。这是检索更多转发的最佳机会。转推也会在常规搜索中返回。
2)如果推文是“新鲜的”和“热门的”(有很多参与度),打几个电话。您可以使用它获取最新的推文。
推荐阅读
- r - 为什么 ggplot2 在 geom_vline 的彩色线条之上添加黑线?
- c# - 提交表单并重定向后,MVC5 无法使用 ajax 获取 php api
- php - 比较2个数组并在php中回显数组相同内容的值的最佳方法是什么?
- python - Ubuntu 说 Python 是最新版本,但实际上不是。我如何更新它
- algorithm - 如何在有向图中找到彼此距离 k 的所有节点(探索图中的每条边)?
- java - 什么类型的数组(代码)适用于这个问题?
- python - 如何修复错误:“make”不是内部或外部命令、可运行程序或批处理文件
- javascript - Vue.js 将 getter 存储在变量中时会发生奇怪的事情
- php - PHP 用文本“或”转换分号 (;)
- c++ - 代码块中的清单配置在哪里?