如何获取一周前的推文(使用tweepy或其他Python库)

44 投票
8 回答
79670 浏览
提问于 2025-04-18 09:44

我一直在尝试解决这个问题,但真的很让人沮丧。我想用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 个回答

2

虽然这个问题已经很老了,但还是有些人可能会遇到同样的情况。经过一些研究,我发现Tweepy的搜索功能只能返回过去7天的数据,这有时候会让人不得不去买第三方服务。我使用了一个叫做GetOldTweets3的Python库,效果很好。这个库的使用非常简单。它唯一的限制是一次搜索不能用多个话题标签,但同时搜索多个账号是没问题的。

5

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

8

找到了一个可以帮助你获取旧推文的代码。

你可以在这里查看: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 代码文件,以获取更多推文的属性。

22

正如你所注意到的,Twitter的API有一些限制。我写了一段代码,使用和Twitter在浏览器上运行时相同的策略来解决这个问题。你可以看看这段代码,它可以帮助你获取最旧的推文:https://github.com/Jefferson-Henrique/GetOldTweets-python

22

你不能通过Twitter的搜索API来收集两年前的推文。根据官方说明:

还要注意,twitter.com上的搜索结果可能会返回一些历史结果,而搜索API通常只提供过去一周的推文。 - Twitter文档.

如果你想获取旧的推文,可以从单个用户那里获取,因为从他们那里收集推文是按数量限制的,而不是按时间限制(所以在很多情况下,你可以追溯到几个月或几年前)。像Topsy这样的第三方服务也可能对你有帮助(虽然它在2016年7月关闭了,但还有其他类似的服务)。

撰写回答