Python 如何使用Tweepy在特定日期获取推文?
如何使用Tweepy在特定日期获取推文 我写的代码如下(jupyter): 比如: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
- 下一条推文@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