2016-03-25 82 views
-2

請幫助,我絕對是新手,需要收集西南的推文。我做錯了什麼?而且,如果我想要一個特定的公司名稱,我需要寫些什麼?謝謝。Python外殼給我錯誤IndexError:列表索引超出範圍

line 32, in get_all_tweets 
    oldest = alltweets[-1].id - 1 
    IndexError: list index out of range 

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_key, access_secret) 
    api = tweepy.API(auth) 
    alltweets = [] 
    new_tweets = api.user_timeline(screen_name = screen_name,count=200) 

    alltweets.extend(new_tweets) 

    oldest = alltweets[-1].id - 1 

    while len(new_tweets) > 0: 
     print "getting tweets before %s" % (oldest) 

     new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest) 

     alltweets.extend(new_tweets) 

     oldest = alltweets[-1].id - 1 
     print "...%s tweets downloaded so far" % (len(alltweets)) 

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

    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("Tverichanka" 

+1

請選擇更多相關標籤和標題;這個問題不是關於shell。 –

回答

0

打印出來new_tweets,看看你會得到什麼。您的錯誤很可能是由於找不到new_tweets而造成的,您是否實際下載數據?否則,你試圖獲得空列表的最後一個元素,並獲取該錯誤。

alltweets = [] 
alltweets.extend([]) # if new_tweets is empty will cause alltweets to remain empty 
oldest = alltweets[-1].id - 1 # can't get the last element of an empty list. 

哦,我說的是while循環之前的那一行。

1

此錯誤清楚地表明您的清單alltweets爲空。這意味着api.user_timeline(screen_name = screen_name,count=200)的返回值是[]

這可能是因爲幾個不同的問題。其中之一可能是您使用的screen_name有一個錯字。

相關問題