python - twython get_followers_list 只能获取200个关注者

标签 python twitter twython

使用 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")

最佳答案

我得到了同样的结果,但是使用关注者 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(),但是去他的,它可以作为概念验证。 ;)

关于python - twython get_followers_list 只能获取200个关注者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251084/

相关文章:

android - twitter 没有重定向到 android 应用程序中的回调 url

python - 简单的Python脚本使用过多的CPU

python - Twython OAuth1 问题,使用示例代码时出现 401 错误

python - 如何处理激活环境时的错误?

python - 用于根据提交的字符串推断国家/地区的库或 API?

css - 社交分享按钮定位

node.js - 使用 Passport.js 和 Express.js 发送推文的 HTTP GET 请求

python - Twitter API/Twython - 显示用户以获取用户个人资料图像

python - 在 Flask 中运行后台 Celery 任务

python - FrozenLake-v1 环境中的渲染问题