2016-10-11 8 views
0

Der folgende Teil des Codes ruft alle Tweets für einen bestimmten Benutzer und speichert sie in einer CSV-Datei. Ich möchte die Tweets vor dem Speichern filtern und nur diejenigen speichern, die den Begriff "Auto" enthalten. Wie kann ich es tun?Filter Tweets vor dem Speichern in CSV

import tweepy #https://github.com/tweepy/tweepy 
import csv 

#Twitter API credentials 
consumer_key = "" 
consumer_secret = "" 
access_key = "" 
access_secret = "" 


def get_all_tweets(screen_name): 
    #Twitter only allows access to a users most recent 3240 tweets with this method 

    #authorize twitter, initialize tweepy 
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_key, access_secret) 
    api = tweepy.API(auth) 



    #initialize a list to hold all the tweepy Tweets 
    alltweets = [] 

    #make initial request for most recent tweets (200 is the maximum allowed count) 
    new_tweets = api.user_timeline(screen_name = screen_name,count=200) 

    #save most recent tweets 
    alltweets.extend(new_tweets) 

    #save the id of the oldest tweet less one 
    oldest = alltweets[-1].id - 1 

    #keep grabbing tweets until there are no tweets left to grab 
    while len(new_tweets) > 0: 
     print "getting tweets before %s" % (oldest) 

     #all subsiquent requests use the max_id param to prevent duplicates 
     new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest) 

     #save most recent tweets 


     alltweets.extend(new_tweets) 

     #update the id of the oldest tweet less one 
     oldest = alltweets[-1].id - 1 

     print "...%s tweets downloaded so far" % (len(alltweets)) 

    #transform the tweepy tweets into a 2D array that will populate the csv 
    outtweets = [[tweet.id_str, tweet.created_at, tweet.text.encode("utf-8")]for tweet in alltweets] 

    #write the csv 
    with open('%s_tweets.csv' % screen_name, 'wb') as f: 
     writer = csv.writer(f) 
     writer.writerow(["id","created_at","text"]) 
     writer.writerows(outtweets) 

    pass 


if __name__ == '__main__': 
    #pass in the username of the account you want to download 
    get_all_tweets("owo_batista") 

Antwort

1

ich eine if-Anweisung an das Ende Ihrer outtweets Liste Verständnis hinzufügen würde:

outtweets = [[tweet.id_str, tweet.created_at, tweet.text.encode("utf-8")]for tweet in alltweets if 'car' in tweet.text.encode("utf-8")] 
Verwandte Themen