如何获得超过一周的推文(使用tweepy或其他python库)

我一直在想这个,但这是一个非常令人沮丧的。 我正在尝试使用Tweepy获得一个特定的hashtag(大量推文)推文。 但是这不会超过一个星期。 我需要回溯至less两年,持续几个月。 这甚至是可能的,如果是的话,怎么样?

只是为了检查这里是我的代码

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')]) 

正如你已经注意到Twitter的API有一些限制,我已经实现了一个代码,使用与浏览器上运行的Twitter相同的策略。 看看,你可以得到最古老的推文: https : //github.com/Jefferson-Henrique/GetOldTweets-python

你不能使用twittersearchAPI来收集两年前的推文。 根据文档:

另外请注意,twitter.com上的search结果可能会返回历史结果,而searchAPI通常只会提供上周的推文。 – Twitter文件 。

如果你需要一种方式来获取旧推文,你可以从个人用户那里获得,因为从他们那里收集推文是受限于数量而不是时间(所以在很多情况下,你可以回到几个月或几年)。 收集类似Topsy的推文的第三方服务也可能对您的情况有用(截至2016年7月,但存在其他服务)。

find一个有助于检索旧推文的代码。 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代码文件来获得更多的tweet属性,根据你的要求。

使用“since”和“until”参数来调整您的时间表。 您目前正在使用旨在对应于twitter id值(不是date)的since_id:

 for tweet in tweepy.Cursor(api.search, q="test", since="2014-01-01", until="2014-02-01", lang="en").items(): 

正如其他人已经指出,Twitter的API有date限制,但不是在twitter.com上实际进行的实际高级search。 所以解决scheme是使用Python的Selenium或PhantomJS封装来遍历twitter.com端点。 这里有一个使用Selenium的实现,有人发布在Github上: https : //github.com/bpb27/twitter_scraping/

使用这个代码,我前一段时间写了这个代码,不得不改变一些代码来适合你的描述

 for tweet in tweepy.Cursor(api.search, q="test", since="2014-01-01", until="2014-02-01", lang="en").items(): 

您可以使用Rest API获取超过一周的推文有关更多详细信息,请访问twitter API参考https://dev.twitter.com/rest/reference/get/statuses/user_timeline