2015-09-28 59 views
-1

我正在使用tweepy来提取最近的50个多用户推文的代码。通过此代码,我可以为所有用户分别生成CSV文件,但希望他们能够进入单个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.") 

回答

2

你需要rejig东西了一下,只有一个文件打开你的输出,以下那种方法应该工作:

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.") 
+0

它现在的工作非常感谢@马丁·埃文斯 –

相关问题