2016-06-28 172 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

非常感谢:) –