2016-03-25 57 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有一个错字。

相关问题