使用Tweepy获取Twitter长推文被截断,求完整获取方法
获取完整长推文的解决方法
问题原因
你当前的代码直接将API返回的Response对象存入列表,且未正确提取推文数据,导致无法获取完整的长推文内容。Twitter API v2中,长推文的完整文本需要通过正确的字段请求和数据提取来获取。
解决步骤
1. 确保请求完整文本字段
在search_all_tweets的tweet_fields中保留text字段即可——API v2中该字段默认返回完整的长推文内容(包含超过280字符的部分),无需额外配置旧版API的tweet_mode参数。你当前的参数已经满足这一点,无需修改字段配置。
2. 正确提取推文数据
你当前的代码将整个response对象存入tweets列表,这会导致后续查看时看到的是对象的截断表示,而非实际完整文本。需要提取response.data中的每个推文对象:
修改后的代码示例:
import tweepy import time tweets = [] for i,j in zip(start_time,end_time): print(i) print(j) for response in tweepy.Paginator(client.search_all_tweets, query = 'สมอง -is:retweet lang:th', user_fields = ['username', 'public_metrics', 'description', 'location'], tweet_fields = ['created_at', 'geo', 'public_metrics', 'text'], expansions = ['author_id', 'geo.place_id'], start_time = i, end_time = j): time.sleep(1) # 提取响应中的推文数据,而非整个response对象 if response.data: tweets.extend(response.data) # 查看完整推文内容的示例 for tweet in tweets: print(f"推文ID: {tweet.id}") print(f"完整内容: {tweet.text}") print("---")
3. 排查终端显示截断问题
如果API返回的文本本身完整,但终端查看时显示截断,这只是终端的自动换行/截断机制,实际数据是完整的。可以将内容写入文件验证:
# 将完整推文写入文件保存 with open("full_tweets.txt", "w", encoding="utf-8") as f: for tweet in tweets: f.write(f"推文ID: {tweet.id}\n") f.write(f"内容: {tweet.text}\n") f.write("="*50 + "\n")
内容的提问来源于stack exchange,提问作者tassaneel
相关产品推荐
相关产品推荐

