【问题标题】:Get the top followed followers of a user in twitter using python-twitter使用 python-twitter 获取 twitter 用户的最高关注者
【发布时间】:2014-07-25 04:14:00
【问题描述】:

我想使用 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.

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

【问题讨论】:

    标签: python twitter python-twitter


    【解决方案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 分钟)运行脚本。

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多