使用python-twitter在Twitter中获得用户的追随者

时间:2014-06-04 13:24:05

标签: python twitter python-twitter

我希望使用python-twitter在twitter中关注用户的最高关注者。并且没有收到“超出速率限制”错误消息。

我可以获得用户的关注者,然后获得每个用户的数量,但问题是当该用户很大(数千)时。

我使用以下函数来获取特定用户的关注者ID:

def GetFollowerIDs(self, userid=None, cursor=-1):
   url = 'http://twitter.com/followers/ids.json'
   parameters = {}
   parameters['cursor'] = cursor
   if userid:
       parameters['user_id'] = userid
   json = self._FetchUrl(url, parameters=parameters)
   data = simplejson.loads(json)
   self._CheckForTwitterError(data)
   return data

我的代码是:

import twitter
api = twitter.Api(consumer_key='XXXX',
                  consumer_secret='XXXXX',
                  access_token_key='XXXXX',
                  access_token_secret='XXXXXX')
user=api.GetUser(screen_name="XXXXXX")
users=api.GetFollowerIDs(user)

#then i make a request per follower in users so that I can sort them according to the number of followers.

问题是,当用户拥有大量关注者时,我会收到“超出限制率”错误消息。

1 个答案:

答案 0 :(得分:1)

我认为您需要按照this link中的说明将结果分块。

这是当前在github页面上显示的工作。但是如果你想要一个无限的流,你应该升级你的Twitter应用程序的订阅。

def GetFollowerIDs(self, userid=None, cursor=-1, count = 10):
   url = 'http://twitter.com/followers/ids.json'
   parameters = {}
   parameters['cursor'] = cursor
   if userid:
       parameters['user_id'] = userid
   remaining = count
   while remaining > 1:
       remaining -= 1
       json = self._FetchUrl(url, parameters=parameters)
       try:
           data = simplejson.loads(json)
           self._CheckForTwitterError(data)
       except twitterError:
           break
   return data

def main():
    api = twitter.Api(consumer_key='XXXX',
                      consumer_secret='XXXXX',
                      access_token_key='XXXXX',
                      access_token_secret='XXXXXX')
    user=api.GetUser(screen_name="XXXXXX")
    count = 100 # you can find optimum value by trial & error
    while(#users not empty):
        users=api.GetFollowerIDs(user,count)

或者另一种可能性是尝试按间隔运行Cron作业,如此处所述。 http://knightlab.northwestern.edu/2014/03/15/a-beginners-guide-to-collecting-twitter-data-and-a-bit-of-web-scraping/

  

以循环使用API​​密钥的方式构建脚本,使其保持在速率限制范围内。


  Cronjobs - 基于时间的作业调度程序,允许您在指定的时间或间隔(例如,始终在凌晨12:01或每15分钟)运行脚本。