微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

# 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 参数将不会返回任何内容,我也浪费了很多时间来尝试使其正常工作

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。