我一直试图解决这个问题,但这真是令人沮丧。我正在尝试使用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')])
答案 0 :(得分:19)
您不能使用Twitter搜索API来收集两年前的推文。根据文档:
另请注意,twitter.com上的搜索结果可能会返回历史结果,而Search API通常只会提供过去一周的推文。 - Twitter documentation。
如果你需要一种方法来获取旧推文,你可以从个人用户那里获取它们,因为从他们那里收集推文受到数量而不是时间的限制(因此在很多情况下你可以追溯到几个月或几年)。收集Topsy等推文的第三方服务也可能对您的情况有用(截至2016年7月关闭,但存在其他服务)。
答案 1 :(得分:19)
正如您已经注意到Twitter API有一些限制,我已经使用与在浏览器上运行的Twitter相同的策略实现了这样做的代码。看一下,您可以获得最早的推文:https://github.com/Jefferson-Henrique/GetOldTweets-python
答案 2 :(得分:8)
找到一个有助于检索旧推文的代码。 https://github.com/Jefferson-Henrique/GetOldTweets-python
要获取旧推文,请在解压缩代码存储库的目录中运行以下命令。
python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000
在上述日子里,您使用关键字返回了一个包含1000条推文的文件“output_got.csv”
您需要安装模块'pyquery'才能使其正常工作
PS:您可以修改'Exporter.py'python代码文件,以根据您的要求获得更多推文属性。
答案 3 :(得分:2)
2018年更新: Twitter有高级搜索API,可以从一开始就返回结果(2006):
https://developer.twitter.com/en/docs/tweets/search/overview/premium#ProductPackages
搜索推文:30天端点→提供前30个推文 天。
搜索推文:完整存档端点→提供完整和即时的 访问Tweets约会回到3月的第一个推文 2006。
使用示例Python客户端: https://github.com/twitterdev/search-tweets-python
答案 4 :(得分:2)
知道这是一个非常老的问题,但仍然有些人可能会面临同样的问题。 经过一番挖掘,我发现Tweepy的搜索仅返回过去7天的数据,有时会导致购买第三方服务。 我使用了Python库GetOldTweets3,它对我来说很好用。该库的实用程序非常简单。该库的唯一限制是我们不能一次执行搜索多个标签,但可以同时搜索多个帐户。
答案 5 :(得分:1)
使用args"因为" "直到"调整你的时间表。您目前正在使用since_id,这意味着对应于twitter id值(不是日期):
for tweet in tweepy.Cursor(api.search,
q="test",
since="2014-01-01",
until="2014-02-01",
lang="en").items():
答案 6 :(得分:1)
正如其他人所说,Twitter API具有日期限制,但不是twitter.com上实施的实际高级搜索。因此,解决方案是使用Python的Selenium或PhantomJS包装器来遍历twitter.com端点。这是一个使用Selenium的实现,有人在Github上发布了这个实现:https://github.com/bpb27/twitter_scraping/
答案 7 :(得分:0)
我不敢相信没有人这么说,但是这个 git 存储库完全解决了我的问题。我无法使用其他解决方案,例如 GOT 或 Twitter API Premium。
试试这个,绝对有用:
https://betterprogramming.pub/how-to-scrape-tweets-with-snscrape-90124ed006af
https://github.com/MartinBeckUT/TwitterScraper/tree/master/snscrape/cli-with-python
答案 8 :(得分:-4)
您可以使用Rest API获取超过一周的推文 有关更多详细信息,请访问twitter API参考 https://dev.twitter.com/rest/reference/get/statuses/user_timeline