Python twython get_followers_列表只能获得200个追随者

Python twython get_followers_列表只能获得200个追随者,python,twitter,twython,Python,Twitter,Twython,使用Twython 3.1.0尝试获取其他用户的追随者 followers = twitter.get_followers_list(screen_name=user, count=500) 即使用户有413个追随者,我也只能检索到其中的200个。 然后我尝试使用Twiton的游标函数: followers = twitter.get_followers_list(screen_name=user, count=500, cursor=10) 它返回零个用户: len(followers(

使用Twython 3.1.0尝试获取其他用户的追随者

followers = twitter.get_followers_list(screen_name=user,  count=500)
即使用户有413个追随者,我也只能检索到其中的200个。 然后我尝试使用Twiton的游标函数:

followers = twitter.get_followers_list(screen_name=user, count=500, cursor=10)
它返回零个用户:

len(followers(['users'])) = 0
从好的方面来说,我看了一下,就可以得到所有追随者的id了

followers = twitter.get_followers_ids(screen_name = "ryanmcgrath")

我也得到了同样的结果,但是如果您只想打印用户名,那么使用follower 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:光标代码无效,因为光标计数的格式错误。该字符串是您可以期望的字符串类型,例如1374004777531007833。count=N的用法是每页的结果数,这就是您达到200个结果限制的原因。您需要做的是获取每页,将数据存储在某个位置,并检查结果中的下一个光标数据,以获取下一页,直到值达到0

编辑3:这对我来说很有效,但不会达到速率限制。如果使用Python2.7.5 for Python3,跟随者计数小于3000,则需要更改原始输入行:

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模块是我保存TwitterOAuth数据的地方,因为它对于我的脚本是静态的,config.py模块包含client_args变量。必要时忽略


有些人好吧,可能很多人不喜欢鼓励使用exec,但去他妈的,它是概念的证明

我也得到了同样的结果,但是如果您只想打印用户名,那么使用follower 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:光标代码无效,因为光标计数的格式错误。该字符串是您可以期望的字符串类型,例如1374004777531007833。count=N的用法是每页的结果数,这就是您达到200个结果限制的原因。您需要做的是获取每页,将数据存储在某个位置,并检查结果中的下一个光标数据,以获取下一页,直到值达到0

编辑3:这对我来说很有效,但不会达到速率限制。如果使用Python2.7.5 for Python3,跟随者计数小于3000,则需要更改原始输入行:

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模块是我保存TwitterOAuth数据的地方,因为它对于我的脚本是静态的,config.py模块包含client_args变量。必要时忽略

有些人好吧,可能很多人不喜欢鼓励使用exec,但去他妈的,它是概念的证明