使用python-twitter获取用户的热门关注者

0 投票
1 回答
2497 浏览
提问于 2025-04-18 08:34

我想用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 个回答

1

我觉得你需要按照这个链接上说的那样,分批获取结果。

这是目前在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)

另外一个可能的办法是尝试按照这里的说明运行定时任务。你可以查看这个链接了解更多:http://knightlab.northwestern.edu/2014/03/15/a-beginners-guide-to-collecting-twitter-data-and-a-bit-of-web-scraping/

构建你的脚本时,要循环使用你的API密钥,以保持在速率限制之内。


定时任务——一种基于时间的任务调度工具,可以让你在指定的时间或间隔运行脚本(例如,每天凌晨12:01,或者每15分钟一次)。

撰写回答