【问题标题】:twython get_followers_list can only get 200 followerstwython get_followers_list 只能获得200个关注者
【发布时间】:2013-10-10 23:47:57
【问题描述】:

使用Twython 3.1.0 试图吸引其他用户的关注者。

followers = twitter.get_followers_list(screen_name=user,  count=500)

虽然 user 有 413 个关注者,但我只能检索到其中的 200 个。
然后我尝试使用 Twyton 的cursor 函数:

followers = twitter.get_followers_list(screen_name=user, count=500, cursor=10)

它返回零个用户:

len(followers(['users'])) = 0

从好的方面来说,我查看了How to get twitter followers using Twython?,我能够使用

获取所有关注者 ID
followers = twitter.get_followers_ids(screen_name = "ryanmcgrath")

【问题讨论】:

    标签: python twitter twython


    【解决方案1】:

    我得到了同样的结果,但是使用关注者 ID 的解决方法是这样的(假设您只想打印用户名):

    user = raw_input("Enter Twitter handle to get followers of: ")
    followids = twitter.get_followers_ids(screen_name = user)
    for x in followids["ids"]:
        data = twitter.show_user(user_id=x)
        print(data["screen_name"])
    

    显然,您可以使用这些屏幕名称或用户 ID 做任何您喜欢的事情(例如,如果使用您自己的关注者,您可以向每个人发送相同的消息)。

    编辑:上面的示例有效,但它会很快遇到速率限制问题,因此分批检查 ID(或做其他事情)的时间延迟是明智的。

    编辑 2:您的光标代码不起作用,因为光标计数格式错误。 API documentation shows 您可以期待的那种字符串(例如“1374004777531007833”)。 “count=N”的使用是每页的结果数,这就是为什么你达到了 200 个结果的限制。您需要做的是获取每一页,将数据存储在某处并检查结果中的“next_cursor”数据以获取下一页,直到该值达到0。

    编辑 3:使用 Python 2.7.5(对于 Python 3,您需要更改 raw_input 行),这对我有用(如果关注者数量少于 3,000 则不会达到速率限制):

    import math
    from twython import Twython
    from authinfo import *
    from config import *
    
    twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
    
    user = raw_input("Enter Twitter handle to get followers of: ")
    suser = twitter.show_user(screen_name=user)
    fnum = 200
    pnum = int(math.ceil(float(suser["followers_count"]) / fnum))
    
    pages = []
    for i in range(pnum):
        pages.append("p"+str(i+1))
    
    oldpages = []
    for i in range(pnum):
        oldpages.append("p"+str(i))
    
    p0 = { "next_cursor": -1 } # So the following exec() call doesn't fail.
    
    for i in range(pnum):
        exec(pages[i]+" = twitter.get_followers_list(screen_name=user, count=fnum, skip_status=1, cursor="+oldpages[i]+"['next_cursor'])")
    
    followers = []
    
    for p in range(pnum):
        try:
            exec("for i in range(fnum): followers.append("+pages[p]+"['users'][i])")
        except(IndexError):
            pass
    
    print(len(followers))
    
    for x in followers:
        print("""Name:  %s
    Username:  %s
    """ % (x["name"], x["screen_name"]))
    

    authinfo.py 模块是我保存 Twitter OAuth 数据的地方(因为它对我的脚本来说是静态的),而 config.py 模块包含 client_args 变量。必要时忽略。

    有些人(好吧,可能是很多人)不喜欢鼓励使用 exec(),但搞砸了,它可以作为概念验证。 ;)

    【讨论】:

      猜你喜欢
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 2015-09-09
      相关资源
      最近更新 更多