2016-06-28 5 views
0

Я использую скрипт python для получения подписчиков для определенного пользователя. Скрипт работает отлично, и он возвращает идентификаторы последователей, когда я использую API поиска пользователей, он возвращает только 3 результата. Сценарий таков:Получение Twitter-подписчиков с использованием API REST от 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) 

И он возвращает результат, как это:

{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'} 

Когда я использую посмотреть API пользователя он возвращает только 4 имени экран:

найдено 1106 подписчиков [] In_tRu_dEr [] amanhaider3 [] SaaddObaid [] Soerwer

Я хочу, чтобы имена экранов всех идентификаторов присутствовали, но он возвращает только 4. Может ли кто-нибудь помочь.

ответ

1

ваш вопрос в этих 2-х линий

(я предположил, вторая линия предназначена, хотя это не в вопросе)

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

эти строки будут создавать многостраничные IdS массивы, и они перезаписывать друг друга

поэтому первая итерация идентификаторы будут иметь идентификаторы от 0 до 100

тогда вы перезаписать его с идентификаторами от 100 до 200 и так далее

пока не дойдешь до последней итерации от 1100 до 1106

так Идентификаторы будет иметь только идентификаторы на нем

и apprenatly от 6 только 4 возвращаются twitter.users.lookup

исправить то вам нужно будет держать все под для п цикла как этот

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

отлично работает благодаря много :) –

Смежные вопросы