如何在日期限制内分析推文?

问题描述

所以我已经可以使用某个关键字获取推文了。但我需要分析特定年份的推文。

# Authentication(access to twitter api)
consumerKey = 'aaaaaaaaaaaaaaaaaaaaaaa'
consumerSecret = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
accessToken = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
accessTokenSecret = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
auth = tweepy.OAuthHandler(consumerKey,consumerSecret)
auth.set_access_token(accessToken,accessTokenSecret)
api = tweepy.API(auth)

keyword = input('Please enter keyword or hashtag to search: ')
noOfTweet = int(input ('Please enter how many tweets to analyze: '))
startDate = datetime.datetime(2010,1,0)
endDate =   datetime.datetime(2010,12,31,0)

tweets = tweepy.Cursor(api.search,q=keyword).items(noOfTweet)

鉴于 Twitter 开发人员 api 限制为每月 50 万条推文,获取从现在到相关年份(在本例中为 2010 年)的所有带有该关键字的推文,然后使用以下代码对其进行过滤是不可能的

for tweet in tweets:
  if (not tweet.created_at < endDate) or (not tweet.created_at > startDate):
    continue
  tweet_list.append(tweet.text)

因为 api.search 似乎总是从现在开始然后倒退,这意味着我什至在 2015 年的推文之前就耗尽了 500k(这是我猜我实际上没有尝试过浪费整个 500k XD)。 还有对这里的第二个答案的评论 tweepy get tweets between two dates 说直到参数仍然有效,但我在尝试 tweepy.Cursor(api.search,q=keyword,until="2000-12-31").items(noOfTweet)

时无法使其工作

解决方法

经过长时间的艰苦搜索,甚至尝试了其他方法(例如通过 python 执行 get 请求),我似乎终于找到了使用 api.search_full_archive 而不是 api.search 的解决方案。所以如果你和我的情况一样,就

替换tweets = tweepy.Cursor(api.search,q=keyword).items(noOfTweet)

带有tweets = tweepy.Cursor(api.search_full_archive,environment_name=envtag,query=keyword,fromDate="YYYYMMDDHHmm",toDate="YYYYMMDDHHmm").items(noOfTweet)

其中 envtag 是一个字符串,您可以通过单击 your developer account 中完整存档的“设置开发环境”按钮获取 并复制注册“开发环境标签” 我还没有尝试过 search_full_archive,因为它应该是溢价,但我还没有支付一毛钱,它的工作原理。

此外,如果您选择早于 7 天前的日期,普通 api.search 上的 until 参数将不会返回任何内容,我也浪费了很多时间来尝试使其正常工作

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...