" IndexError:列表索引超出范围"使用Tweepy获取推文

时间:2018-01-03 07:56:05

标签: python python-3.x twitter tweepy

我编写代码来分析各种政治家的社交媒体模式。这个只是在日期时间之间给出推文计数。以下工作完美,除非我回到过去的时间。例如,这可以追溯到近一年:

#------------------------------------------------------------------------------
# Import libraries and modules

from api import api # Using Tweepy
import datetime
from   datetime import timedelta

#------------------------------------------------------------------------------
# Define variables

user          = 'vp'
timezoneShift = timedelta(hours=5) # Twitter times are UTC. Convert to Eastern Time. UTC−05:00 or UTC−04:00 depending on daylight savings. TODO: Fix for strictly EST or EDT?
startDate     = datetime.datetime(2017, 1, 20, 0, 0, 0) + timezoneShift
endDate       = datetime.datetime(2017, 1, 26, 0, 0, 0) + timezoneShift

#------------------------------------------------------------------------------
# Fetch tweets

tweets = []
tmpTweets = api.user_timeline(user)
for tweet in tmpTweets:
    if tweet.created_at < endDate and tweet.created_at > startDate:
        tweets.append(tweet)

while (tmpTweets[-1].created_at > startDate): # If more to get, get more
    print('Fetched up to', tmpTweets[-1].created_at - timezoneShift, '...fetching more')
    tmpTweets = api.user_timeline(user, max_id = tmpTweets[-1].id-1) # ID minus one else we begin where we ended and get a duplicate
    for tweet in tmpTweets:
        if tweet.created_at < endDate and tweet.created_at > startDate:
            tweets.append(tweet)

#------------------------------------------------------------------------------
# Print tweets

count = 0
for tweet in tweets:
    print(tweet.created_at - timezoneShift)
    count += 1

print('\n' + user, 'tweets from', startDate - timezoneShift, 'to', endDate - timezoneShift)
print('\nCount:', count, '\n')

我收到此错误:

  

回溯(最近一次呼叫最后一次):文件&#34; count.py&#34;,第22行,in          while(tmpTweets [-1] .created_at&gt; startDate):#如果要获得更多,请获取更多IndexError:列表索引超出范围

但如果我回到2月的第一周,那就行了。

出了什么问题以及如何解决?

1 个答案:

答案 0 :(得分:-1)

据我所知,列表tmpTweets不能用索引-1加入。列表索引在python中从0开始,因此传入索引-1是没有意义的,因此你得到索引超出范围错误是完全合乎逻辑的。

tmpTweets[-1]

是问题

编辑:抱歉,我真的很累,并且完全超越了我的头,索引-1在python中完全有效。