Tweepy使用多个API密钥和光标来搜索Twitter

时间:2016-06-26 17:08:24

标签: python twitter tweepy

我一直在使用此post

中的示例

创建一个在短时间内搜索并获取大量推文的系统。但是,每次我切换到一个新的API密钥(制作一个新的光标)时,搜索从头开始,并让我重复推文。如何让每个光标从另一个停止的位置开始?我错过了什么?这是我正在使用的代码:

currentAPI = 0

a = 0
currentCursor = tweepy.Cursor(apis[currentAPI].search, q = '%40deltaKshatriya')
c = currentCursor.items()
mentions = []
onlyMentions = []
while True:
    try:
        tweet = c.next()
        if a > 100000:
            break
        else:
            onlyMentions.append(tweet.text)
            for t in tTweets:
                if tweet.in_reply_to_status_id == t.id:
                    print str(a) + tweet.text
                    mentions.append(tweet.text)
        a = a + 1
    except tweepy.TweepError:
        print "Rate limit hit"
        if (currentAPI < 9):
            print "Switching to next sat in constellation"
            currentAPI =  currentAPI + 1
            #currentCursor = c.iterator.next_cursor
            currentCursor = tweepy.Cursor(apis[currentAPI].search, q = '%40deltaKshatriya', cursor = currentCursor)
            c = currentCursor.items()
        else:
            print "All sats maxed out, waiting and will try again"
            currentAPI = 0
            currentCursor = tweepy.Cursor(apis[currentAPI].search, q = '%40deltaKshatriya', cursor = currentCursor)
            c = currentCursor.items()
            time.sleep(60 * 15)
        continue
    except StopIteration:
        break

1 个答案:

答案 0 :(得分:1)

我发现了一种我觉得有效的解决方法,尽管我仍然遇到一些问题。想法是加入

currentCursor = tweepy.Cursor(apis[currentAPI].search, q = '%40deltaKshatriya', cursor = currentCursor, max_id = max_id)

其中max_id是在达到速率限制之前获取的最后一条推文的ID。我遇到的唯一问题是StopIteration很早就被提升(在我获得完整的100,000条推文之前),但我认为这是一个不同的SO问题。