如何用Python结合Twitter Search API统计扩展推文数量?
扩展推文识别失败的问题分析与修复方案
问题1:搜索时未指定tweet_mode='extended'
Twitter API默认返回截断版推文(最多140字符),如果不指定tweet_mode='extended',搜索结果里根本不会包含扩展推文的完整数据,自然统计不到目标内容。
问题2:判断扩展推文的逻辑错误
你代码里的if (tweet_mode='extended') in tweet:是语法错误,且逻辑完全不成立。正确逻辑是:当指定tweet_mode='extended'后,原创扩展推文的内容存在于tweet.full_text属性中;转发的扩展推文,内容则在tweet.retweeted_status.full_text里。
修正后的代码
import tweepy import keys auth = tweepy.OAuthHandler(keys.consumer_key, keys.consumer_secret) auth.set_access_token(keys.access_token, keys.access_token_secret) api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) # 必须添加tweet_mode='extended'参数才能获取扩展推文数据 tweets = api.search(q='Covid', count=1000, tweet_mode='extended') count = 0 for tweet in tweets: try: # 统计原创扩展推文(通过full_text属性和内容长度验证) if hasattr(tweet, 'full_text') and len(tweet.full_text) > 140: count += 1 # 统计转发的扩展推文 elif hasattr(tweet, 'retweeted_status') and hasattr(tweet.retweeted_status, 'full_text') and len(tweet.retweeted_status.full_text) > 140: count += 1 except Exception as e: print(f"处理推文出错: {e}") print("Number of extended tweets: ", count)
补充说明
tweet_mode='extended'是获取扩展推文的必要参数,必须在调用search方法时明确指定。- 转发的扩展推文需要从
retweeted_status子对象中提取full_text,因为原推文的完整内容会嵌套在转发结构里。 - 通过
len(full_text) > 140可以进一步确认是真正的长推文,不过也存在用户故意在扩展模式下发短内容的情况,这个判断可根据需求取舍。
内容的提问来源于stack exchange,提问作者haroka
相关产品推荐
相关产品推荐

