使用Tweepy获取tweet时出现“IndexError:list index out of range”(索引错误:列表索引超出范围)

2024-10-17 06:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写代码来分析不同政客的社交媒体模式。这个只是给出了一个日期时间之间的tweet计数。除非我回到过去太久,否则下面的方法是完美的。例如,这可以追溯到近一年前:

#------------------------------------------------------------------------------
# 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')

我得到这个错误:

Traceback (most recent call last): File "count.py", line 22, in while (tmpTweets[-1].created_at > startDate): # If more to get, get more IndexError: list index out of range

但是如果我回到,比如说,二月的第一个星期,它就起作用了。在

出什么问题了,我该怎么解决?在


Tags: andtoapiforgetdatetimemoretweets
1条回答
网友
1楼 · 发布于 2024-10-17 06:12:58

据我所知,列表tmpTweets无法使用索引-1访问。在python中,list索引从0开始,因此传入index-1是没有意义的,因此您得到索引超出范围的错误是完全合乎逻辑的。在

tmpTweets[-1]

是问题吗

编辑:抱歉,我真的很累,我完全不知道索引-1在python中是完全有效的。在

相关问题 更多 >