如何用rtweet库获取指定推文的正确转推及引用推文数量?
解决rtweet获取转推和引用推文数量的问题
使用rtweet库分析推文时,遇到转推计数与引用推文识别不匹配的问题。目标推文ID为1594049106615291907,截至提问时,该推文页面显示有536条转推和267条引用推文,但通过以下代码获取的tweet_retweets仅包含94条转推,且所有is_quote值均为FALSE:
tweet_status_id <- "1594049106615291907" tweet_retweeter_ids <- rtweet::get_retweeters(status_id = tweet_status_id) tweet_retweets <- rtweet::get_retweets(status_id = tweet_status_id, n = 1000) dim(tweet_retweets) table(tweet_retweets$is_quote)
问题根源
- Twitter API对
get_retweets接口有硬限制,最多只能返回100条最新的纯转推内容,即便设置n=1000也无法突破这个限制,这就是你只拿到94条的原因。 - 引用推文属于独立创作的推文,只是关联了原推文,
get_retweets接口仅返回无额外内容的纯转推,不会包含引用推文,因此is_quote字段全为FALSE。
正确获取数据的方法
1. 直接获取官方统计的总数
无需拉取所有转推/引用内容,调用lookup_tweets获取原推文的元数据,就能得到和页面一致的计数:
original_tweet <- rtweet::lookup_tweets(tweet_status_id) # 查看转推总数 original_tweet$retweet_count # 查看引用推文总数 original_tweet$quote_count
2. 获取所有转推用户ID(若需用户数据)
get_retweeters接口支持返回最多10万个转推用户的ID,比get_retweets能覆盖更多转推记录:
all_retweeter_ids <- rtweet::get_retweeters(status_id = tweet_status_id, n = 100000) # 转推用户数量 length(all_retweeter_ids)
3. 拉取引用推文内容
要获取引用推文,需通过search_tweets接口搜索关联原推文的内容:
quote_tweets <- rtweet::search_tweets( paste0("quote_of:", tweet_status_id), n = 10000, include_rts = FALSE # 过滤掉纯转推 ) # 实际获取到的引用推文数量 nrow(quote_tweets)
注意:搜索接口受API索引范围限制,可能无法返回所有历史引用推文,但能覆盖绝大多数有效数据。
内容的提问来源于stack exchange,提问作者Canovice
相关产品推荐
相关产品推荐

