Python 如何使用Tweepy在特定日期获取推文?

Python 如何使用Tweepy在特定日期获取推文?,python,twitter,tweepy,tweets,twitterapi-python,Python,Twitter,Tweepy,Tweets,Twitterapi Python,如何使用Tweepy在特定日期获取推文 我写的代码如下(jupyter): 比如: 下一条推文@2019-02-15 13:33:26 1095106703098605568 157 下一条推特@2019-02-11 23:45:58 1094442196500209666 158 下一条推特@2019-02-10 03:45:28 1094441678889463809 159 下一条Tweet@2019-02-10 03:43:241094441678889463809 160 下一条Tw

如何使用Tweepy在特定日期获取推文

我写的代码如下(jupyter):

比如:

  • 下一条推文@2019-02-15 13:33:26 1095106703098605568 157
  • 下一条推特@2019-02-11 23:45:58 1094442196500209666 158
  • 下一条推特@2019-02-10 03:45:28 1094441678889463809 159
  • 下一条Tweet@2019-02-10 03:43:241094441678889463809 160
  • 下一条Tweet@2019-02-10 03:43:241094441678889463809 161
  • 下一条Tweet@2019-02-10 03:43:241094441678889463809 162
  • 下一条Tweet@2019-02-10 03:43:241094441678889463809 163
我该怎么解决这个问题

最后给出了这个误差

> IndexError                                Traceback (most recent call
> last) <ipython-input-9-46264abdd8ef> in <module>
>       9         tweets.append(tweet)
>      10 
> ---> 11 while (tmpTweets[-1].created_at > startDate):
>      12     print("Last Tweet @", tmpTweets[-1].created_at, " - fetching some more")
>      13     tmpTweets = api.user_timeline(username, max_id = tmpTweets[-1].id)
> 
> IndexError: list index out of range
>索引器错误回溯(最近的调用
>最后)在
>9条推文。追加(推文)
>      10 
>-->11 while(tmpTweets[-1]。在>开始日期创建):
>12打印(“最后一条推文@”,tmpTweets[-1]。创建于“-获取更多”)
>13 tmpTweets=api.user\u timeline(用户名,max\u id=tmpTweets[-1].id)
> 
>索引器:列表索引超出范围

更好的方法是使用
方法/端点的
因为id
max\u id
参数,而不是发出大量不必要的请求,在时间范围之外的大量tweet中循环。您还应该考虑改用

您遇到的错误很可能是因为该帐户自使用
startDate
指定的时间以来有超过3200条tweet

此方法最多只能返回3200条用户最近的推文


因此,一旦它浏览了最近3200条tweet,对方法/端点的下一次调用将为
tmpTweets
分配一个空列表。当您尝试在
print
语句中为
tmpTweets
编制索引时,它将出错。您的回溯似乎与代码片段的代码不同。如果打印语句不存在,那么当您尝试在
while
条件下索引
tmpTweets
时就会出错,就像在回溯中一样。

原因可能是
API。用户时间线
只返回20个最新状态。我已经使用了下面链接中的解决方案来解决这个问题。但这一次给出了上述错误。这个问题仍然存在。有人可以帮忙吗?您好,首先,谢谢您的回复。我重新安排了主题,如果你看一下,我将不胜感激。3200推特限制,因为我知道我在交易。这段代码可以适应不同的方式吗?你能举例说明吗?(同时,我找不到光标的详细示例)这仍然会以与
if
语句相同的方式出错,因为
tmpTweets
将是一个空列表,而不是与上一个请求相同,因为您的
max_id
将超过限制。睡眠也不能缓解这个问题。您只需检查列表是否为空,如果为空,则中断循环,例如
如果不是tmpTweets:break
。在分配
名称时也会出现缩进错误。我链接的
Cursor
文档有以下示例:
tweets2=[]
tweets.reverse()
for x in tweets:
    if(x.in_reply_to_status_id==None) or (x.in_reply_to_screen_name==name):
        if (not x.retweeted) and ("RT @" not in x.full_text):
            tweets2.append(x)
> IndexError                                Traceback (most recent call
> last) <ipython-input-9-46264abdd8ef> in <module>
>       9         tweets.append(tweet)
>      10 
> ---> 11 while (tmpTweets[-1].created_at > startDate):
>      12     print("Last Tweet @", tmpTweets[-1].created_at, " - fetching some more")
>      13     tmpTweets = api.user_timeline(username, max_id = tmpTweets[-1].id)
> 
> IndexError: list index out of range