从twitter API检索每个userId超过(~3000)个推文。

时间:2015-11-10 06:30:06

标签: api twitter

我是Twitter开发的新手。我正在尝试下载重要新闻机构的推文。我使用了http://www.karambelkar.info/2015/01/how-to-use-twitters-search-rest-api-most-effectively中提供的指南。下载推文。我知道twitter api对请求数量有限制(每15分钟180个请求),每个请求最多可以获取100个推文。所以我希望以下代码能够在我第一次运行它时获得18K的推文。但是,我只能为每个新闻机构发送3000条推文。例如,nytimes 3234推文,cnn 3207。 如果您能查看我的代码并让我知道问题,我将感激不尽。

def get_tweets(api, username, sinceId):
        max_id = -1L
        maxTweets = 1000000 # Some arbitrary large number
        tweetsPerReq = 100  # the max the API permits
    tweetCount = 0

    print "writing to {0}_tweets.txt".format(username)
    with open("{0}_tweets.txt".format(username) , 'w') as f:
            while tweetCount < maxTweets:
                try:
                    if (max_id <= 0):
                        if (not sinceId):
                            new_tweets = api.user_timeline(screen_name = username, count= tweetsPerReq)
                        else:
                            new_tweets = api.user_timeline(screen_name = username, count= tweetsPerReq, since_id = sinceId)                              
                    else:
                        if (not sinceId):
                            new_tweets = api.user_timeline(screen_name = username, count= tweetsPerReq, max_id=str(max_id - 1))
                        else:
                            new_tweets = api.search(screen_name = username, count= tweetsPerReq, max_id=str(max_id - 1), since_id=sinceId)

                    if not new_tweets:
                        print "no new tweet"
                        break
                    #create array of tweet information: username, tweet id, date/time, text

                    for tweet in new_tweets:
                        f.write(jsonpickle.encode(tweet._json, unpicklable=False) +'\n')


                    tweetCount += len(new_tweets)
                    print("Downloaded {0} tweets".format(tweetCount))
                    max_id = new_tweets[-1].id
                except tweepy.TweepError as e:
                    # Just exit if any error
                    print("some error : " + str(e))
                    break                       


        print ("Downloaded {0} tweets, Saved to {1}_tweets.txt".format(tweetCount, username))

1 个答案:

答案 0 :(得分:1)

这些是API施加的限制。

如果您read the documentation,您会看到它显示

  

此方法最多只能返回用户最近推文的3,200条。

因此,答案是 - 普通API用户无法访问该数据。