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

How to analyse tweets within date constraints?

所以我已经可以获取带有特定关键字的推文。但我需要分析特定年份的推文。

# 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, 1, 0, 0, 0)
endDate =   datetime.datetime(2010, 12, 31, 0, 0, 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)。 这里还有关于第二个答案的评论 说还有一个 until 参数在工作,但是我在尝试 tweepy.Cursor(api.search, q=keyword, until="2000-12-31").items(noOfTweet)

时无法让它工作

经过漫长而艰苦的搜索,甚至尝试了其他方法,例如通过 python 获取请求,我似乎终于找到了使用 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 因为它应该是高级的,但我没有付一毛钱而且它有效。

另外 until 参数在正常 api.search 将 return 如果你选择一个早于 7 天前的日期,我也失去了很多花点时间尝试让它工作