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

Mus*_*kan 33 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')])
Run Code Online (Sandbox Code Playgroud)

Lui*_*igi 20

您不能使用Twitter搜索API来收集两年前的推文.根据文档:

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

如果你需要一种方法来获取旧推文,你可以从个人用户那里获取它们,因为从他们收集的推文受到数量而不是时间的限制(所以在很多情况下你可以追溯到几个月或几年).收集像Topsy这样的推文的第三方服务也可能对您的情况有用(截至2016年7月关闭,但存在其他服务).

  • @Luigi不是现在.我今天刚试了一下:( (6认同)

Jef*_*res 19

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

  • 在Vanilla Ubuntu 12.04上没有为我工作,所以,我必须首先安装pyquery&lxml.如果有人遇到同样的问题,请做apt-get install python-pip; pip安装pyquery; apt-get install python-lxml; 然后脚本将工作.;) (2认同)

小智 9

找到一个有助于检索旧推文的代码. https://github.com/Jefferson-Henrique/GetOldTweets-python

要获取旧推文,请在提取代码存储库的目录中运行以下命令.

python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000
Run Code Online (Sandbox Code Playgroud)

它在上述日子里使用您的关键字返回了一个包含1000条推文的文件"output_got.csv"

你需要安装一个模块'pyquery'才能工作

PS:你可以修改'Exporter.py'python代码文件,以根据你的要求获得更多的推文属性.


Geo*_*die 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


Roh*_*itJ 1

使用参数“since”和“until”来调整您的时间范围。您目前正在使用since_id,它对应于twitter id值(而不是日期):

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

  • 是的,我尝试过,但这也是不可能的,如果日期超过一周,则输出什么也没有。所以我必须使用与搜索不同的方法,但我没有找到任何其他有效的方法 (3认同)