Skip to content

Instantly share code, notes, and snippets.

Created February 7, 2017 07:28
What would you like to do?
Updated version of yanofsky/5436496
import 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
#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
#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, 'w') as f:
writer = csv.writer(f)
if __name__ == '__main__':
#pass in the username of the account you want to download
Copy link

ghost commented Dec 24, 2017

Hi! I had a question:
Whenever I download all the tweets into an Excel file, every tweet starts with the letter b..

Example: b"The price of the product has..."
Why does this occur?

I get output such as fo\xe2\x80\xa6" at the end of some tweets- why does this occur?

Thank you.

Copy link

Hi, thanks for the code. I am trying to use this to download the tweets of multiple users using a list of the users then a for loop. When I run the script, it seems to delete the tweets of the previous user, so I only wind up with the tweets of the last person in the list. Do you know how to fix this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment