Im Versuch, die Tweets alle aus den letzten 24 Stunden zu sammeln und sie in eine CSV setzen Dateialle Tweets aus der Vergangenheit 24 Stunden zu sammeln Versuch und sie in eine CSV setzen Datei
Wenn ich dies tun bekomme ich
_csv.Error: iterable expected, not datetime.datetime
Als Fehler
Kann mir jemand helfen, zu sagen, wie dieser Fehler und anderer Verbesserungen, um loszuwerden, die möglicherweise an den Code vorgenommen werden könnten
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_token, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
# initialize a list to hold all the tweepy Tweets
alltweets = []
# make initial request for most recent tweets (20 is the maximum allowed count)
new_tweets = api.home_timeline (screen_name=screen_name, count=20)
# save most recent tweets
alltweets.extend(new_tweets)
# save the id of the oldest tweet less one
oldest = alltweets[-1].id - 1
page = 1
deadend = False
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.home_timeline(screen_name=screen_name, count=20, max_id=oldest, page = page)
# 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)))
for tweet in alltweets:
if (datetime.datetime.now() - tweet.created_at).days < 1:
# 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")]
else:
deadend = True
return
if not deadend:
page += 1
time.sleep(10)
# write the csv
with open('%s_tweetsBQ.csv' % screen_name, 'w') as f:
writer = csv.writer(f)
writer.writerow(["id", "created_at", "text"])
writer.writerows(outtweets)
pass
print ("CSV written")
if __name__ == '__main__':
# pass in the username of the account you want to download
get_all_tweets("BQ")
bearbeiten
(most recent call last):
File "C:\Users\Barry\workspace\TwitterTest\Test1\MGo.py", line 77, in <module>
get_all_tweets("BQ")
File "C:\Users\Barry\workspace\TwitterTest\Test1\MGo.py", line 70, in get_all_tweets
writer.writerows(outtweets)
_csv.Error: iterable expected, not datetime.datetime
EDIT 2
for row in outtweets:
date_str,time_str, entries_str = row.split()
#print(a_date,a_time, entries)
a_time = datetime.strptime(time_str, "%H:%M:%S")
for e in entries_str.split(','):
# write the csv
with open('%s_tweetsBQ.csv' % screen_name, 'w') as f:
writer = csv.writer(f)
writer.writerow(["id", "created_at", "text"])
writer.writerows(outtweets)
pass
Bitte korrigieren Sie Ihren Einzug und veröffentlichen Sie den ** Volltext ** des Tracebacks. – MattDMo
Einrückungen behoben, Gehen Sie zum Hinzufügen der Traceback zur Frage – Barry
Verwenden Sie die [Bearbeiten] -Funktion, um zu tun, was ich fragte. Veröffentlichen Sie keinen Code oder Tracebacks in Kommentaren, sie können nicht gelesen werden. – MattDMo