2016-06-28 86 views
0

我正在使用python腳本獲取特定用戶的關注者。該腳本運行完美,它返回追隨者的ID時,我使用用戶查找API它只返回3結果。劇本是這樣的:使用Twitter的REST API獲取Twitter關注者

#!/usr/bin/python 


from twitter import * 

import sys 
import csv 
import json 

config = {} 
execfile("/home/oracle/Desktop/twitter-1.17.1/config.py", config) 

twitter = Twitter(
    auth = OAuth(config["access_key"], config["access_secret"],config["consumer_key"], config["consumer_secret"])) 

username = "#####" 

query = twitter.followers.ids(screen_name = username) 

print "found %d followers" % (len(query["ids"])) 

for n in range(0, len(query["ids"]), 100): 
ids = query["ids"][n:n+100] 

subquery = twitter.users.lookup(user_id = ids) 
for user in subquery: 

    print " [%s] %s" % ("*" if user["verified"] else " ", user["screen_name"]) 
# print json.dumps(user) 

,並返回類似這樣的輸出:當我使用用戶查找API它只返回4名屏幕的名字,像這樣

{u'next_cursor_str': u'0', u'previous_cursor': 0, u'ids': [2938672765, 1913345678, 132150958, 2469504797, 2162312397, 737550671029764097,  743699723786158082, 743503916885737473, 742612685632770048, 742487358826811392, 742384945121878020, 741959985127665664, 1541162424, 739102973830254592, 740198523724038144, 542050890, 739971273934176256, 2887662768, 738922874011013120, 738354749045669888, 737638395711791104, 737191937061584896, 329618583, 3331556957, 729645523515396096, 2220176421, 162387597, 727099914635874304, 726665274737475584, 725406360406470657, 938760691, 715260034335305729, 723912842320158720, 538208881, 2188791158, 723558257541828608, 1263571466, 720182865275842564, 719947801598259200, 636067084, 719412219168038912, 719199478260043776, 715921761158574080........ ], u'next_cursor': 0, u'previous_cursor_str': u'0'} 

找到1106個追隨者 [] In_tRu_dEr [] amanhaider3 [] SaaddObaid [] Soerwer

我想所有ID的屏幕名稱存在,但它只返回4.任何人都可以幫忙。

回答

1

您的問題是在那些2線

(我假設第二行的目的是,儘管它不是問題)

for n in range(0, len(query["ids"]), 100): 
    ids = query["ids"][n:n+100] 

這些線路將創建多IDS陣列和他們互相覆蓋

所以第一次迭代IDS將有從0到IDS 100

,那麼你從100到200個ID覆蓋它等等

,直到你最後一次迭代達到1100年至1106年

所以IDS將只在其上的IDS

和apprenatly從這些6只4被twitter.users.lookup

回到修復它,你將需要把一切都根據n個循環 這樣

for n in range(0, len(query["ids"]), 100): 
    ids = query["ids"][n:n+100] 

    subquery = twitter.users.lookup(user_id = ids) 
    for user in subquery: 

     print " [%s] %s" % ("*" if user["verified"] else " ", user["screen_name"]) 

這將工作

+0

非常感謝:) –