如何将多个用户的推文附加到单个 CSV 文件中

How to append tweets of multiple users into a single CSV file

我正在尝试使用此代码使用 tweepy 在单个 CSV 文件中提取多个用​​户的最近 50 条推文。使用此代码,我可以为所有用户单独制作 CSV 文件,但希望他们进入单个 CSV 文件。

import tweepy 
import csv

consumer_key ='XXX'
consumer_secret = 'XXX'
access_key = 'XXX'
access_secret = 'XXX'

handles_list = ["handle1", "handle2", "handle3"]

def get_all_tweets(screen_name):
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)

    recenttweets = []   
    recent_tweets = api.user_timeline(screen_name = handle, count=50)
    recenttweets.extend(new_tweets)

    Resultingtweets= [[tweet.user.name, tweet.user.screen_name, tweet.user.description, tweet.id_str, tweet.created_at, tweet.text.encode("utf-8")] for tweet in recenttweets]

    with open('%s_tweets.csv' % handle, 'w', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow(["User Name","Twitter_Handle","Twitter_User_Description","tweet_id","created_at","Tweet_text"])
        writer.writerows(Resultingtweets)

if __name__ == '__main__':
    for handle in handles_list:
        get_all_tweets("handles")
        print ("Done.")

您需要稍微调整一下,只为输出打开一个文件,以下一种方法应该可行:

import tweepy 
import csv

consumer_key ='XXX'
consumer_secret = 'XXX'
access_key = 'XXX'
access_secret = 'XXX'

handles_list = ["handle1", "handle2", "handle3"]

def get_all_tweets(screen_name, writer):
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)

    recenttweets = []   
    recent_tweets = api.user_timeline(screen_name = handle, count=50)
    recenttweets.extend(new_tweets)

    Resultingtweets= [[tweet.user.name, tweet.user.screen_name, tweet.user.description, tweet.id_str, tweet.created_at, tweet.text.encode("utf-8")] for tweet in recenttweets]

    writer.writerow(["User Name","Twitter_Handle","Twitter_User_Description","tweet_id","created_at","Tweet_text"])
    writer.writerows(Resultingtweets)

if __name__ == '__main__':
    with open('all_tweets.csv', 'w', encoding='utf-8') as f_all:
        writer = csv.writer(f_all)

        for handle in handles_list:
            get_all_tweets("handles", writer)
            print ("Done.")