使用Python的旧推文Tweepy

时间:2016-05-04 03:31:35

标签: python twitter tweepy

我正在尝试使用Python中的tweepy来获取较旧的推文数据(大约2个月)。我试过,直到参数但没有成功。有没有人在tweepy或其他API中找到解决方法。

for id,tweet in enumerate (tweepy.Cursor(api.search, q='SpecificWord', since="2016-04-26", until="2016-04-28", lang="en", include_retweets=False    ).items(200)):
     #Write a row to the csv file
     CSVW.writerow([tweet.created_at,    tweet.retweet_count,    tweet.text.encode('utf-8')])

2 个答案:

答案 0 :(得分:4)

这是不可能的。 The docs on the Twitter API are very clear

  

Twitter Search API搜索过去7天内发布的最近推文的样本。

没有办法进一步搜索。

答案 1 :(得分:3)

有两种方法可以获取较旧的推文。

  1. 您获得了Tweepy的分叉版本,它支持多个身份验证处理程序。 guide关于如何使用它(不幸的是只有Python 2.7)。或者你使用Here is an instruction限制器来进行Tweepy。但是使用Twitter API,我认为最早的数据大约是7天。

  2. 另一种方法是使用this ratetime,它也适用于Python 3.这是一个如何使用它的示例。

  3. 首先安装lxml(版本3.5)& pyquery版本1.2.10):

    pip3 install lxml==3.5.0
    pip3 install pyquery==1.2.10
    

    然后下载GetOldTweets-python并将文件夹got3复制到您的站点包文件夹中并运行Python。

    import got3
    
    max_tweets = 3
    
    tweetCriteria = got3.manager.TweetCriteria().setUntil("2016-01-31").setQuerySearch("bitcoin").setMaxTweets(max_tweets)
    
    for i in range(max_tweets):
        tweet = got3.manager.TweetManager.getTweets(tweetCriteria)[i]
        print(tweet.id)
        print(tweet.username)
        print(tweet.text)
        print(tweet.date)
    

    现在您将从2016年获得推文!

    693584301917655041
    bitcoinfirehose
    Teenagers are using untraceable currency Bitcoin to buy dangerous drugs online http://ift.tt/20eIDwU #reddit #bitcoin
    2016-01-31 00:59:18
    
    693584300265070593
    bitcoinfirehose
    Hey guys I've seen a need to cashout to Visa. So I created a site to get moneypak codes via Bitcoin ! Please come check it out! …
    2016-01-31 00:59:18
    
    693584286210002944
    b1eedr
    Bitcoin 2.0: Fantasy Or Inevitability? https://www.cryptocoinsnews.com/bitcoin-2-0-fantasy-or-inevitability/ @CryptoCoinsNews
    2016-01-31 00:59:14