2013-10-08 28 views
1

使用Twython 3.1.0試圖獲得其他用戶的關注者。twython get_followers_list只能獲得200個關注者

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?,我能得到的所有追隨者ID與

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

回答

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等(例如如果使用你自己的追隨者,你可以給每個人發DM信息)。

編輯:上面的例子工作,但它會迅速遇到速率限制問題,所以延遲批量檢查ID(或其他東西)是明智的。

編輯2:您的光標代碼不工作,因爲光標計數是錯誤的格式。 API documentation shows可以預期的字符串類型(例如「1374004777531007833」)。 「count = N」的使用是每頁結果的數量,這就是您達到200個結果限制的原因。你需要做的是獲得每一頁,將數據存儲在某個地方,並檢查結果中的「next_cursor」數據,以獲得下一頁,直到值達到0.

編輯3:這適用於我(沒有擊中速率限制,如果跟隨計數小於使用Python 2.7.5約3000)(對於Python 3,您需要更改線路的raw_input):

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(),但是把它搞砸了,它可以作爲一個概念驗證。 ;)