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

时间:2014-06-13 21:43:18

标签: python twitter tweepy

我一直试图解决这个问题,但这真是令人沮丧。我正在尝试使用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')])

9 个答案:

答案 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