twython get_followers_list只能获得200个关注者

时间:2013-10-08 14:52:08

标签: python twitter twython

使用Twython 3.1.0尝试获取其他用户的关注者。

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

即使用户有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?,我能够让所有关注者都

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

1 个答案:

答案 0 :(得分:4)

我得到同样的东西,但使用关注者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(),但是搞砸了它,它可以作为一个概念验证。 ;)