我正在使用Tweepy获取特定推文的所有转发者。我的代码如下:
for reTweet in api.retweets(<tweet_id>,100):
print reTweet
我尝试使用tweepy游标使用分页,如下所示:
for status in tweepy.Cursor(api.retweets, <tweet_id>).items():
但它正在显示
引发TweepError(&#39;此方法不执行分页&#39;)
如何使用Tweepy API获取推文的所有转发者?
答案 0 :(得分:1)
如果您查看GET statuses/retweets/:id的Twitter文档,您会看到它:
返回id参数指定的Tweet的最近次转发的集合。
如果您检查tweepy code,您会看到您正在使用的功能使用该API。
def retweets(self):
""" :reference: https://dev.twitter.com/rest/reference/get/statuses/retweets/%3Aid
:allowed_param:'id', 'count'
"""
return bind_api(
api=self,
path='/statuses/retweets/{id}.json',
payload_type='status', payload_list=True,
allowed_param=['id', 'count'],
require_auth=True
)
你可以做些什么来获得超过100转推的限制,如果它是一个仍然被转发的推文就是多次调用该函数,只要你尊重速率限制,并存储每次调用的唯一结果。
如果推文在开始跟踪之前被转发超过100次,您将无法获得较旧的转推。
答案 1 :(得分:0)
您需要使用 tweepy.Cursor
才能使用分页:
def get_retweeters(tweet_id: int) -> List[int]:
"""
get the list of user_ids who have retweeted the tweet with id=tweet_it
:param tweet_id: id of thetweet to get its retweeters
:return: list of user ids who retweeted the tweeet
"""
result = list() # type: List[int]
for page in tweepy.Cursor(api.retweeters, id=tweet_id, count=500).pages():
result.extend(page)
return result
这对我有用,python 3.7.7,tweepy 3.10.0