2015-09-28 3 views
-1

Я пытаюсь использовать этот код с помощью tweepy, чтобы извлечь последние 50 твитов нескольких пользователей в одном CSV-файле. С помощью этого кода я могу сделать 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

Вам нужно переоборудовать вещи немного, и только один файл открыт для вывода, следующий такой подход должен работать:

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

Сво работает в настоящее время спасибо @Martin Эванс –

Смежные вопросы