为何遍历Tweepy获取的推文数据后数据会消失?
解决Tweepy提取推文后重复循环数据消失的问题
问题根源:你用tweepy.Cursor获取的tweets是一次性迭代器,迭代器在完成一次循环遍历后,内部指针会指向末尾,再次循环时就没有数据可以取出,所以看起来“数据消失”了。
要实现基于同一批推文为DataFrame新增列,只需先把迭代器转成可重复访问的列表,保存原始推文数据,之后就能多次使用这个列表操作。
具体调整步骤:
将Cursor结果转为列表
把Cursor调用结果转成列表,保存所有推文对象,后续可重复遍历:# 把Cursor返回的迭代器转为列表,保存原始推文数据 tweets_list = list(tweepy.Cursor(api.search, q=search_term, since=str(t2)).items(10))基于列表构建初始DataFrame
用这个列表完成第一次循环,存入基础数据:import pandas as pd df = pd.DataFrame() # 第一次循环:提取基础字段存入DataFrame for tweet in tweets_list: df.loc[len(df)] = { 'tweet_id': tweet.id, 'text': tweet.text, 'created_time': tweet.created_at }基于同一列表新增列
直接使用保存的tweets_list,提取需要的字段新增到DataFrame中,无需重新调用API:# 批量新增列:提取推文作者信息 df['author_username'] = [tweet.user.screen_name for tweet in tweets_list] df['author_followers'] = [tweet.user.followers_count for tweet in tweets_list] # 循环方式新增(适合复杂字段提取) for idx, tweet in enumerate(tweets_list): df.loc[idx, 'retweet_count'] = tweet.retweet_count df.loc[idx, 'favorite_count'] = tweet.favorite_count
这样就能确保始终基于同一批推文数据操作,不会出现循环后数据消失的问题。
内容的提问来源于stack exchange,提问作者Enrique Penson
相关产品推荐
相关产品推荐

