如何获取一周前的推文(使用tweepy或其他Python库)
我一直在尝试解决这个问题,但真的很让人沮丧。我想用Tweepy获取带有特定标签的推文(数量非常多)。但是,这个方法只能获取到一周内的推文。我需要查看至少两年前的几个月的推文。这可能吗?如果可以的话,该怎么做呢?
为了方便检查,这是我的代码:
import tweepy
import csv
consumer_key = '####'
consumer_secret = '####'
access_token = '####'
access_token_secret = '####'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# Open/Create a file to append data
csvFile = open('tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q="#ps4",count=100,\
lang="en",\
since_id=2014-06-12).items():
print tweet.created_at, tweet.text
csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])
8 个回答
虽然这个问题已经很老了,但还是有些人可能会遇到同样的情况。经过一些研究,我发现Tweepy的搜索功能只能返回过去7天的数据,这有时候会让人不得不去买第三方服务。我使用了一个叫做GetOldTweets3的Python库,效果很好。这个库的使用非常简单。它唯一的限制是一次搜索不能用多个话题标签,但同时搜索多个账号是没问题的。
2018年的更新:Twitter推出了高级搜索API,可以从2006年开始获取结果。
https://developer.twitter.com/en/docs/tweets/search/overview/premium#ProductPackages
搜索推文:30天接口 → 提供过去30天的推文。
搜索推文:完整档案接口 → 提供从2006年3月第一条推文开始的所有推文,随时可以访问。
这里有一个Python客户端的示例:https://github.com/twitterdev/search-tweets-python
找到了一个可以帮助你获取旧推文的代码。
你可以在这里查看:https://github.com/Jefferson-Henrique/GetOldTweets-python
要获取旧推文,你需要在解压代码库的文件夹里运行以下命令。
python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000
运行后,它会生成一个名为 'output_got.csv' 的文件,里面包含了你输入关键词的1000条推文。
为了让这个功能正常工作,你需要安装一个叫 'pyquery' 的模块。
另外,你可以根据自己的需求修改 'Exporter.py' 这个 Python 代码文件,以获取更多推文的属性。
正如你所注意到的,Twitter的API有一些限制。我写了一段代码,使用和Twitter在浏览器上运行时相同的策略来解决这个问题。你可以看看这段代码,它可以帮助你获取最旧的推文:https://github.com/Jefferson-Henrique/GetOldTweets-python